Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择两列值相等的行的SQL查询_Mysql_Sql - Fatal编程技术网

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中是一样的。