我有以下列和条目:
TitleID Entry
1 qedf
1 qwer
2 asdf
2 asdf
我希望获得所有具有冲突条目的TitleID。例如,像:
SELECT title_id FROM table WHERE entry1 != entry2
结果应为:
TitleID
1 # because 1 has two conflicting values, 'qedf' and 'qwer'
我该如何进行此查询?
答案 0 :(得分:3)
我会使用group by
并只比较最小值和最大值:
SELECT title_id
FROM table
GROUP BY title_id
HAVING MIN(entry) <> MAX(entry);
如果您想要不同条目的数量,请在count(distinct entry)
子句中抛出select
。
答案 1 :(得分:1)
您可以执行分组并检查having子句:
SELECT title_id FROM table WHERE entry IN (SELECT entry FROM table GROUP BY entry HAVING COUNT(entry) > 1)
更新问题(使用自联接)
SELECT title_id FROM table t1 WHERE (SELECT * from table t2 WHERE t1.entry != t2.entry AND t1.title_id = t2.title_id)
答案 2 :(得分:1)
您可以使用JOIN
执行此操作,DISTINCT
删除重复项:
SELECT DISTINCT t1.TitleID FROM table t1
JOIN table t2
ON t2.TitleID = t1.TitleID AND t2.Entry != t1.Entry
答案 3 :(得分:0)
SELECT
title_id,
GROUP_CONCAT(distinct Entry)
FROM table WHERE 1
GROUP BY title_id
HAVING COUNT(distinct Entry)>1
GROUP BY title_id
将表拆分为不同title_id
COUNT(distinct Entry)
统计群组中的唯一条目
GROUP_CONCAT(distinct Entry)
由于您无法从MySQL中获取数组,因此要列出所有这些条目,您需要将它们连接成一个字符串。
答案 4 :(得分:0)
Select * From (Select TitleID,Count(distinct Entry) as CT From [Table] group by TitleID) a
where a.CT > 1