Mysql 向查询结果添加有条件的额外字段
我有这两张桌子 表1锦标赛数据Mysql 向查询结果添加有条件的额外字段,mysql,sql,Mysql,Sql,我有这两张桌子 表1锦标赛数据 tournament_id | accound_id | data1 | data2 表2锦标赛的订阅 tournament_id | account_id 在这里,我必须像这样读取表1的数据 SELECT data1,data2 from tournaments_data WHERE 1 在每行结果中添加一个额外字段,如果特定帐户id已订阅特定锦标赛,则该字段必须为true;如果帐户id未订阅,则该字段必须为false。如果我们可以在第二个表中找到一行,其
tournament_id | accound_id | data1 | data2
表2锦标赛的订阅
tournament_id | account_id
在这里,我必须像这样读取表1的数据
SELECT data1,data2 from tournaments_data WHERE 1
在每行结果中添加一个额外字段,如果特定帐户id已订阅特定锦标赛,则该字段必须为true;如果帐户id未订阅,则该字段必须为false。如果我们可以在第二个表中找到一行,其中accound_id与特定的锦标赛_id耦合,则帐户_id被订阅到锦标赛。
实例
tournament_id | account_id | data1 | data2
1 1 data1a data2a
2 5 data1b data2b
tournament_id | account_id
1 1
预期结果
data1a data2a true
data1b data2b false
正在查询帐户\u id=1。
希望它足够清楚。我假设两列都命名为account\u id,并且有输入错误 您可以使用左连接。例如:
select
d.data1,
d.data2,
case when s.tournament_id is null then 'false' else 'true' end
from tournaments_data d
left join tournaments_subscriptions s
on s.tournament_id = d.tournament_id
and s.account_id = d.account_id
and s.account_id = 1 -- specific account
结果:
data1 data2 case w...
------ ------ ---------
data1a data2a true
data1b data2b false
参见运行示例。您可以使用左连接。SQL语句如下:
SELECT TD.*, CASE WHEN TS.tournament_id IS NULL THEN 'false' ELSE 'true' END AS flag
FROM tournaments_data AS TD
LEFT JOIN tournaments_subscriptions AS TS
ON TS.tournament_id = TD.tournament_id AND TS.accound_id = TD.accound_id
DB FIDDLE链接:等待。。。账户id与账户id相同,还是有打字错误?如果正确,请详细说明。对不起,这是一个打字错误,谢谢