Mysql 如果键对存在于另一个表中,则选择列为true/false
我目前有这些表格。服务器:MariaDB (为了更简单,我删除了一些列) 我试图达到这个结果 使用个人id=1进行测试Mysql 如果键对存在于另一个表中,则选择列为true/false,mysql,sql,mariadb,Mysql,Sql,Mariadb,我目前有这些表格。服务器:MariaDB (为了更简单,我删除了一些列) 我试图达到这个结果 使用个人id=1进行测试 snippet.id | snippet.title | is_favourite (check favourite table) -------------------------------------------------------- 1 | BestTitle | true 2
snippet.id | snippet.title | is_favourite (check favourite table)
--------------------------------------------------------
1 | BestTitle | true
2 | Test2 | false
3 | Test3 | false
使用个人id=2进行测试
snippet.id | snippet.title | is_favourite (check favourite table)
--------------------------------------------------------
1 | BestTitle | false
2 | Test2 | false
3 | Test3 | false
我试着用IN、join和嵌套查询来实现它。这就是您想要的吗
select s.id, s.title,
(exists (select 1
from Favourite f
where f.snippet_id = s.id and f.person_id = ?
)
) as is_favourite
from snippet s;
?
是您感兴趣的个人id的占位符。我不知道MariaDB,但是您不能在收藏夹表上使用外部联接并使用isnull函数来获得它吗
snippet.id | snippet.title | is_favourite (check favourite table)
--------------------------------------------------------
1 | BestTitle | true
2 | Test2 | false
3 | Test3 | false
snippet.id | snippet.title | is_favourite (check favourite table)
--------------------------------------------------------
1 | BestTitle | false
2 | Test2 | false
3 | Test3 | false
select s.id, s.title,
(exists (select 1
from Favourite f
where f.snippet_id = s.id and f.person_id = ?
)
) as is_favourite
from snippet s;