Вы можете использовать следующее, используя 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