如何编写一个select语句来测试一对多表中的两列

时间:2017-07-19 15:58:17

标签: mysql sql

我有两个一对多关系的mysql表。

Table a (id, title)
Table b (id, a_id, str1, str2)

我想从表A中选择所有行,并包含一个额外的列来指示对于每个子行,如果str1不为null,则str2也不为空。

例如,鉴于此数据......

Table a (id, title)
1, row1
2, row2
3, row3
4, row4

Table 2 (id, a_id, str1, str2)
1, 2, testa, testb
2, 2, testc, NULL
3, 3, testd, teste
4, 4, NULL, NULL

...我想选择一个看起来像这样的结果集:

id, title, str1AndStr2
1, row1, 1
2, row2, 0
3, row3, 1
4, row4, 1

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

这可以使用MySQL的sprand来完成。为此,我已将case语句插入到select子句中以有条件地显示值。

select
  a.id
  , a.title
  , case 
    when b.str1 is not null and b.str2 is not null
      then 1
    else 0
  end as str1AndStr2
from
  tableA a
  join tableB b