将条件附加字段添加到查询结果

时间:2020-06-20 15:27:13

标签: mysql sql

我有这两个表

表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。 希望它足够清楚。

2 个答案:

答案 0 :(得分:1)

您可以使用LEFT JOIN。 SQL如下:

Template

数据库链接:Here

答案 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上的运行示例。