MySQL显示的行不止一次出现不同的值?

时间:2011-11-29 14:57:38

标签: mysql count

对于这样的表(成分):

+-----+-----+
|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。

感谢您的时间

2 个答案:

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