查找MySQL中按外键分组的不同值的ID

时间:2014-09-10 14:05:09

标签: mysql sql group-by

我有一张桌子

process包含文件idfk_objectstatus

例如

id| fk_object | status
----------------------
1 | 3         | true
2 | 3         | true
3 | 9         | false
4 | 9         | true
5 | 9         | true
6 | 8         | false
7 | 8         | false

我希望找到id分组的所有行status的{​​{1}}。

在此示例中,它应返回fk_object s id,因为3, 4, 5 fk_object现有9 status和{ {1}}而另一个只有一个。

3 个答案:

答案 0 :(得分:2)

这将获取具有该属性的fk_object值:

select fk_object
from process
group by fk_object
having min(status) <> max(status);

您可以使用join

获取相应的行
select p.*
from process p join
     (select fk_object
      from process
      group by fk_object
      having min(status) <> max(status)
     ) pmax
     on p.fk_object = pmax.fk_object;

答案 1 :(得分:1)

Select id from process 
    where fk = ( select fk from process where status in ('true','false'));

答案 2 :(得分:1)

股票回应如下......

SELECT ... FROM ... WHERE ... IN ('true','false')... GROUP BY ... HAVING COUNT(DISTINCT status) = 2;

其中'2'等于IN()

中的参数个数