【发布时间】:2020-05-22 13:11:17
【问题描述】:
我有两张桌子:
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。为什么?
【问题讨论】:
-
这不是
ALL子查询所做的。您要求选择 id 等于 m2 中所有 id 的 m1 行,这是不可能的,因为它们并不完全相同。 -
哦。也许我对 ALL 的概念理解有误。你能给我一个在这种情况下使用 ALL 的示例代码吗?
-
@ChrisMa 我建议您查看我在回答中链接到的手册页。
标签: mysql where-clause