查询在一个字段中相同但在另一个字段中不同的记录?

时间:2016-05-13 19:51:11

标签: sql sqlite

我正在尝试编写一个SQL查询来从单个表中提取具有相同model_number字段但不同primary_use字段的记录。我已经能够查询重复项,但是我的查询没有区分记录是否真的重复或者primary_use是不同的。我对两个字段中记录具有相同信息的地方不感兴趣,只是在不匹配的地方。

3 个答案:

答案 0 :(得分:1)

使用SQLite我相信你最好的选择是自我加入:

SELECT DISTINCT t1.*, t2.*
FROM yourtable as t1
    INNER JOIN yourtable as t2 ON
        t1.model_number = t2.model_number AND
        t1.primary_use <> t2.primary_use;

将表连接到自己,其中model_number是相同的,但primary_use是不同的,然后返回不同的结果应该给你你想要的。

答案 1 :(得分:0)

一些例子会有所帮助,但听起来像是

select distinct model_number, primary_use from [table]

或者

select model_number, primary_use from [table]
group by model_number, primary_use 

答案 2 :(得分:0)

最有效的方法是使用exists

select t.*
from t
where exists (select 1
              from t t2
              where t2.model_number = t.model_number and t2.primary_use <> t.primary_use
             );

为了提高效率,您需要t(model_number, primary_use)上的索引。

或者,如果您只想要型号:

select model_number
from t
group by model_number
having min(primary_use) <> max(primary_use);