繁体   English   中英

将第二个 MySQL 表中的数据添加到第一个表的结果中

[英]Add data from second MySQL table to the result from the first one

我有 2 张桌子:

+-----------+
|   users   |
+-----------+
|   John    |
|   Peter   |
|   Alex    |
+-----------+

+-----------+
|   banned  |
+-----------+
|   John    |
|   Peter   |
+-----------+

是否可以SELECT * FROM users并将结果与第二个表结合起来以找出用户是否被禁止?

您可以使用LEFT JOIN使用以下内容:

-- with CASE WHEN
SELECT users.*, CASE WHEN banned.username IS NULL THEN 0 ELSE 1 END AS isBanned
FROM users LEFT JOIN banned ON users.username = banned.username

-- without CASE WHEN (thanks to @forpas!)
SELECT users.*, banned.username IS NOT NULL AS isBanned
FROM users LEFT JOIN banned ON users.username = banned.username

如果用户与banned表不匹配,则用户名(以及其他列)为NULL 您可以使用CASE WHEN检查用户名是否为NULL

您还可以使用EXISTS而不是LEFT JOIN来获取以下附加信息:

SELECT *, EXISTS(SELECT 1 FROM banned WHERE users.username = banned.username) AS isBanned
FROM users

还有第三个选项使用IF

SELECT users.*, IF(banned.username IS NULL, 0, 1) AS isBanned
FROM users LEFT JOIN banned ON users.username = banned.username

dbfiddle.uk 上的演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM