MySQL Select 来自 table return 全部,加上一个带条件的列和另一个查询

MySQL Select from table return all, plus one column with condition and another query

我在 MySQL 查询方面非常基础。我在 Laravel 网络应用程序上工作,此时它涉及到编辑用户角色的部分。我有一个 table 列出了用户角色的选项(称为 mst_level),另一个 table 反映了具有该角色的用户列表(称为 mst_user_level)。已经搜索了好几次这个主题,但总是发现不同的情况。

mst_level

mst_user_level

预期输出:

Select all levels for a spesific user_id, and return all columns in mst_level + 1 column called "checked", with the condition if the user has that role in mst_user_level, return true, else return false.

这是我已经做过的,我知道这是错误的

    select a.*, coalesce(true, false) as checked from  my_db_name.mst_level a
         inner join my_db_name.mst_user_status b on a.id = b.mst_level_id
         where b.mst_user_id = '363fdeea-5330-490a-b4db-34e32a3526d6'

谁能帮我解决这个问题?非常感谢...

你可以用 EXISTS:

SELECT m.*, 
       EXISTS (
         SELECT 1 
         FROM my_db_name.mst_user_status s 
         WHERE s.mst_level_id = m.id
           AND s.mst_user_id = '363fdeea-5330-490a-b4db-34e32a3526d6'
       ) AS checked 
FROM my_db_name.mst_level m;

或者在 ON 子句中设置条件的 LEFT JOIN

SELECT m.*, s.mst_level_id IS NOT NULL AS checked 
FROM my_db_name.mst_level m LEFT JOIN my_db_name.mst_user_status s 
ON s.mst_level_id = m.id AND s.mst_user_id = '363fdeea-5330-490a-b4db-34e32a3526d6';