SQL从1个表行中选择,其中2个特定列值不等于

时间:2018-05-14 04:10:53

标签: sql select join rows

我有一张桌子

id  number    name    update_date
1   123       asd       08.05.18
2   412       ddd       08.05.18
3   123       dsa       14.05.18
4   125       dsa       05.05.18

整个表格就是那样的行。我需要选择第1行和第3行,因为我需要不同的update_dates但数字相同。怎么做?我需要在2个更新日期08.05.18和14.05.18之间查看特定数字的变化。我的表中有更多更新日期。

我试过了:

SELECT *
FROM legal_entity_history a
JOIN legal_entity_history b ON a.BIN = b.BIN
WHERE ( a.update_date <> b.update_date AND
        a.update_date = "08.05.18" AND
        b.update_date = "14.05.18" ) 

2 个答案:

答案 0 :(得分:0)

试试这个:假设同一个号码在同一个update_date下可能不会出现多次,那么,您可以使用GROUP BY HAVING来实现这一目标。以下

SELECT t.*
FROM test t
INNER JOIN (SELECT number 
            FROM test 
            GROUP BY number 
            HAVING COUNT(DISTINCT update_date) > 1) t1 ON t1.number = t.number

<强>输出

id  number  name    update_date
1   123     asd     08.05.18
3   123     dsa     14.05.18

答案 1 :(得分:0)

一种相对简单的方法是:

select leh.*
from legal_entity_history leh
where exists (select 1
              from legal_entity_history leh2
              where leh2.number = leh.number and leh2.update_date <> leh.update_date
             );

为了提高性能,您需要legal_entity_history(number, update_date)上的索引。