MySQL Select from table 返回全部,加上带有条件的一列和另一个查询

标签 mysql boolean left-join exists

我对 MySQL 查询非常基础。我在 Laravel Web 应用程序上工作,此时需要编辑用户角色的部分。我有一个表列出了用户角色的选项(称为 mst_level),另一个表反射(reflect)了具有该角色的用户列表(称为 mst_user_level)。多次搜索该主题,但总是发现不同的情况。

mst_level mst_level Table

mst_用户级别 enter image description here

预期输出:

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;

或者使用 LEFT JOIN,其中条件在 ON 子句中设置:

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';

关于MySQL Select from table 返回全部,加上带有条件的一列和另一个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69422426/

相关文章:

mysql - 使用 LIKE %% 和 LEFT JOIN

mysql - 如何使用嵌套 SELECT 优化此 SQL 查询?

php - 如果可能的话,如何对同一个表进行多个内部连接,但使用哪些不同的外键?

search - Solr 过滤器查询,包括 NOT 和 OR

r - 在条件下加入两个数据帧(grepl)

php - 如何在另一个表中抓取主键并将其放入外键? PHP, MySQL

mysql - Rails boolean 值 - True 和 False 与 1 和 0

php - 是真的吗(在 PHP 中)?

c# - Left Outer Join,这两种方法有什么区别?

mySQL 不同连接?