当带有ALL的where子句返回true时,为什么我的MySQL语句不返回任何记录?

克里斯·马(Chris Ma):

我有两个表:

create table m1 (id int, name varchar(255));
insert into m1 (id, name) values 
 (1, 'tingwei'),
 (2, 'jiahui'),
 (3, 'naidan'),
 (5, 'weizhi'),
 (9, 'siyao');

create table m2 (newid int, name varchar(255));
insert into m2 (newid, name) values 
 (1, 'leijun'),
 (2, 'wangjianlin'),
 (3, 'wangjianlin'),
 (5, 'wangjianlin'),
 (9, 'wangjianlin');

我想获得m1中所有满足条件的字段,其中m1中id的所有值都与m2中newid的所有值相同,这是我的代码:

select * from m1
where id = all (select newid from m2);

但是我得到了0条记录。id和newid的所有值都相同:1、2、3、5、9。我认为where子句应返回TRUE。为什么?

尼克:

您的查询返回任何结果,因为它要求每个id价值m1是一样的所有newid价值观m2,而且由于1不等于235或者9不返回该行,并同样适用于其他行。有关全部内容,请参见子查询手册

我认为您真正想要的是JOINon newid,它将返回m1id值存在于newid中的行m2

SELECT m1.*
FROM m1
JOIN m2 ON m2.newid = m1.id

或一个IN表达式:

SELECT m1.*
FROM m1
WHERE id IN (SELECT newid FROM m2)

输出(对于您的样本数据的两个查询):

id  name
1   tingwei
2   jiahui
3   naidan
5   weizhi
9   siyao

dbfiddle上的演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我的内部联接查询不返回任何内容?

为什么在使用WHERE子句时,MySQL的LEFT JOIN返回“ NULL”记录?

为什么换行的return语句不返回任何值?

为什么if语句返回True?

为什么我的SQL查询返回的记录与where子句不匹配?

为什么在使用MIN函数并选择另一列时,我们需要GROUP BY子句?MIN不返回单条记录吗?

具有SQL的Excel VBA:指定Where子句时不返回任何行

为什么包含orderBy语句不返回所有记录?

为什么return语句不返回任何文本,而print却返回任何文本?

为什么我的异步函数不返回任何结果?

使用LINQ,为什么只有一条记录时GroupBy不返回任何行?

如果语句应该为true时为什么返回false?

if语句为true时,nodejs映射不返回任何内容

当新添加的表中没有数据时,更新SQL语句不返回任何记录

为什么带有must子句的弹性搜索查询不返回任何文档?

WHERE不返回任何内容时,SQL WHERE!=子句不产生任何结果

为什么if语句返回`true`?

如何创建一个在Rails中不返回任何记录的where子句?

MySQL Where子句不返回任何结果

当 sum 为 0 时,为什么我的 SQL 查询不返回任何行

当我使用带有 where 子句的 select 语句时,SqlDataReader 不返回任何行

带有like子句的mysql if语句返回null

为什么这个 WHERE 子句不返回正确的数据?

为什么我的 FutureBuilder 不返回任何数据?

为什么这个带有可选值的结构不返回任何内容?

为什么我的 for 循环不返回任何内容?

为什么在 Chrome 扩展中使用 where 子句时,firestore 不返回对象?

为什么我的填充函数不返回任何值?

为什么我的路径函数不返回任何图像