如何获取从一个表和另一个唯一数据
如果我想显示Order_Number data1 data2 data3
(最新的日期改变其他Data1,OtherData2,OtherData3)date_changed
问题是我不只是一行,我得到多行每个订单号码。如何获取从一个表和另一个唯一数据
我很想得到的是
1, a, f,q, cc,ccc,abc, 12/2/2014, bob
3, c, b,h, aa,aaa,abc, 12/2/2014, bob
谢谢!
我与
SELECT
t.Order_Number,
cr.data1, cr.data2, cr.data3,
t.OtherData1, t.OtherData2, t.OtherData3,
x.date_changed, cr.name
FROM
(SELECT
Order_Number,
Max(date_changed) as date_changed
FROM
table2
GROUP BY
Order_Number) x
JOIN
table2 t ON x.date_changed = t.date_changed
LEFT JOIN
table1 cr ON x.Order_Number = cr.Order_Number
WHERE cr.name = 'bob'
在这里工作是示例表。
Table1
:
Order_Number data1 data2 data3 name
1 a f q bob
2 b g g john
3 c b h bob
4 d s j john
Table2
:
Order_Number date_changed OtherData1 OtherData2 OtherData3
1 11/30/2014 aa aaa abc
1 12/1/2014 bb bbb def
1 12/2/2014 cc ccc abc
3 12/1/2014 dd aaa def
2 11/30/2014 dd bbb abc
2 12/1/2014 ss ccc def
3 12/2/2014 aa aaa abc
4 11/26/2014 fc wer wsd
你加入到config_log(表2)需要,如果你想获取唯一行包括整个复合键。
JOIN
conf_log t ON x.date_changed = t.date_changed
And x.Order_Number = t.Order_number
我拿到双打的时候我加入您线(更好的那么很多新的),但如果我使用由ORDER_NUMBER 我从表2组date_changed只是 选择ORDER_NUMBER,MAX(date_changed)我需要(但不是所有的数据)相同的唯一条目,如果我使用 从表2中选择不同的Order_Number 但是,当我尝试添加OtherData1等我得到双打。 – user2136748 2014-12-02 19:39:42
表2中是否有其他字段用于识别唯一行?如果表2中有多个日期/编号匹配,您可以使用哪些其他标准来选择一个,或者是选择排名前1的足够多(可以使用子查询或CTE来完成?) – Aaron 2014-12-02 20:08:24
不,这就是table2看起来只是我有很多的数据,我是这么做的吗?基本上,我想从表1中选择所有订单及其数据,并使用该订单号为表2中的每个订单选择所有最新数据。 – user2136748 2014-12-02 20:21:25
我认为你需要有2子querys:
SELECT
Data.Order_Number,
Data.data1, Data.data2, Data.data3,
Data.OtherData1, Data.OtherData2, Data.OtherData3,
Data.date_changed, Data.name
FROM
(SELECT
Order_Number,
Max(date_changed) as date_changed
FROM
table2
GROUP BY
Order_Number) x
JOIN (SELECT
t.Order_Number,
cr.data1, cr.data2, cr.data3,
t.OtherData1, t.OtherData2, t.OtherData3,
t.date_changed, cr.name
FROM table2 t
JOIN table1 cr
ON t.Order_Number = cr.Order_Number) AS Data
ON x.date_changed = data.date_changed
AND x.Order_Number = data.Order_number
WHERE cr.name = 'bob'
您在where子句中有cr.name的事实意味着LEFT JOIN有相同的影响作为刚刚加入。
conf_log和table2是否一样? – radar 2014-12-02 18:17:06
是我不小心没得到它的变化太大 – user2136748 2014-12-02 19:19:25