获取具有不同值的所有项目

时间:2014-11-10 21:26:47

标签: mysql

我有以下列和条目:

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'

我该如何进行此查询?

5 个答案:

答案 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