Mysql 选择两列值相等的行的SQL查询
假设我有下表:Mysql 选择两列值相等的行的SQL查询,mysql,sql,Mysql,Sql,假设我有下表: id || name || published -------------------------- 1 || john || 1 7 || alex || 0 1 || roco || 0 4 || mika || 0 16 || mika || 1 8 || zack || 1 8 || alfi || 1 我应该运行哪个sql查询来返回ID 16和8 我尝试了以下操作,但始终使用ID 1、16和8
id || name || published
--------------------------
1 || john || 1
7 || alex || 0
1 || roco || 0
4 || mika || 0
16 || mika || 1
8 || zack || 1
8 || alfi || 1
我应该运行哪个sql查询来返回ID 16和8
我尝试了以下操作,但始终使用ID 1、16和8:
SELECT A.*
FROM table A
INNER JOIN (SELECT id, published
FROM table
WHERE published > 0
GROUP BY id) B
ON A.id = B.id AND A.published = B.published
GROUP BY id
有什么想法吗?您似乎想要
不存在:
SELECT a.*
FROM table a
WHERE NOT EXISTS (SELECT 1 FROM table a1 WHERE a1.id = a.id AND a1.published = 0);
您似乎希望不存在
:
SELECT a.*
FROM table a
WHERE NOT EXISTS (SELECT 1 FROM table a1 WHERE a1.id = a.id AND a1.published = 0);
您可以在
select t.* from your_table t
where t.id not in (
select id from your_table t1
where t1.published=0
)
输出
id name published
16 mika 1
8 alif 1
8 zack 1
您可以在中使用not
select t.* from your_table t
where t.id not in (
select id from your_table t1
where t1.published=0
)
输出
id name published
16 mika 1
8 alif 1
8 zack 1
可以使用<代码>组> <代码>条件聚合> 子句,仅考虑<强>已发布具有<强> > < < /强>零>
SELECT id
FROM table_name
GROUP BY id
HAVING SUM(published = 0) = 0
或者,作为@Gordon Linoff,您也可以使用以下内容:
SELECT id
FROM table_name
GROUP BY id
HAVING MIN(published) > 0
可以使用<代码>组,在<<代码>中使用条件聚合(<<代码> >子句)仅考虑<强>已发布< /强>具有<强> > < < /强>零>
SELECT id
FROM table_name
GROUP BY id
HAVING SUM(published = 0) = 0
或者,作为@Gordon Linoff,您也可以使用以下内容:
SELECT id
FROM table_name
GROUP BY id
HAVING MIN(published) > 0
它可以通过使用
SELECT name, published
FROM A
WHERE id IN (16, 8)
ORDER BY id;
它可以通过使用
SELECT name, published
FROM A
WHERE id IN (16, 8)
ORDER BY id;
预期产量是多少?为什么是16和8?哪种逻辑导致16和8?按id分组,最小值(已发布)>0预期输出是什么?为什么是16和8?哪种逻辑导致16和8?按id分组,最小值(已发布)>0你太棒了!你真棒@wdotis乐于帮助:)我会使用min(published)>0
,但在MySQL中是一样的。@wdotis乐于帮助:)我会使用min(published)>0
,但在MySQL中是一样的。