我有这两个表
表1(tours_data)
tournament_id | accound_id | data1 | data2
表2(锦标赛订阅)
tournament_id | account_id
在这里,我必须像这样读取表1的数据
SELECT data1,data2 from tournaments_data WHERE 1
为每行结果添加一个额外的字段,如果特定的account_id订阅了特定的比赛,则必须为true;如果没有订阅的account_id,则必须为false。如果我们可以在第二个表中找到一行,其中accound_id与特定的tour_id耦合,则account_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
查询account_id = 1。 希望它足够清楚。
答案 0 :(得分:1)
答案 1 :(得分:0)
我假设这两列都命名为account_id
,并且有一个错字。
您可以使用LEFT JOIN
。例如:
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
请参见DB Fiddle上的运行示例。