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