对于这样的表(成分):
+-----+-----+
|id |fruit|
+-----+-----+
| 1 | or |
| 1 | ban |
| 2 | or |
| 2 | or |
+-----+-----+
我想要一个应该产生这样结果的查询:
id 1 与两种水果相关联。
我不关心多行是否有相同的数据,我只关心具有相同id的行是否有不同的结果。
e.g。 id 2只与两行中的一种水果相关联,我不在乎!!!
我有我想要实现的伪代码,但没有任何mysql
Select all id's
From the ingredients table
Group by id
If group count of id is greater than 1 and has different fruits then display
我有一种有趣的感觉,我可能无法在Mysql中执行此操作,并且必须使用一些PHP。
感谢您的时间
答案 0 :(得分:6)
SQL中的伪代码:
SELECT id
FROM ingredients
GROUP BY id
HAVING COUNT( DISTINCT fruit ) > 1
如果速度很慢,您可以尝试使用此版本 - MAX()
而MIN()
可能比COUNT(DISTINCT )
更快 - 尽管它的可读性较低:
SELECT id
FROM ingredients
GROUP BY id
HAVING MAX( fruit ) > MIN( fruit )
答案 1 :(得分:3)
试试这个
SELECT id
FROM your_table
GROUP BY id
HAVING COUNT(DISTINCT fruit) > 1