选择subselect返回多个值的行

7xllpg7q  于 2021-06-15  发布在  Mysql
关注(0)|答案(3)|浏览(269)

我有两个表[用户]和[团队]。我的users表类似于[id][e-mail]。我的teams表如下所示[team][userid]。
我需要做一个如下的子选择: SELECT * FROM users WHERE 'ID' != (SELECT UserID FROM teams) 问题是subselect返回多个值。所以我不能这样比较。
我想达到的目标:
我想从没有在表[teams]中列出的用户那里得到数据。
例子:

Table [Users]              |  Table[Teams]  |
--------------             ------------------
[ID] [E-Mail]              [UserID] [Team]
1    example1@google.com  | 1        Football
2    example2@google.com  | 1        Basketball
3    example3@google.com  | 2        Basketball

如您所见,有3个现有用户,但第三个用户没有列在表[teams]中。我想要用户的电子邮件,因为他不在这些团队中。
我怎么能做到呢?

zaqlnxep

zaqlnxep1#

我们也可以使用 EXISTS 条款:

SELECT *
FROM users u
WHERE NOT EXISTS (SELECT 1 FROM teams t WHERE u.ID = t.UserID);
dfddblmv

dfddblmv2#

您可以有多种方法来实现相同的功能
下面是select*from users where id not in的一种方法(select userid from teams)

ttp71kqs

ttp71kqs3#

而不是 != 使用 NOT IN :

SELECT * FROM users WHERE ID NOT IN (SELECT UserID FROM teams WHERE UserID IS NOT NULL)

注意 UserID IS NOT NULL 在子查询中。。。 NOT IN 如果子查询返回一个或多个 NULL 价值观。

相关问题