【问题标题】:Add data from second MySQL table to the result from the first one将第二个 MySQL 表中的数据添加到第一个表的结果中
【发布时间】:2026-01-30 08:10:02
【问题描述】:

我有 2 张桌子:

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

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

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

【问题讨论】:

  • 试试LEFT JOIN
  • 是的,有可能。

标签: mysql sql select


【解决方案1】:

您可以使用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

demo on dbfiddle.uk

【讨论】:

    最近更新 更多