基于第二个表标记MySQL表记录

时间:2017-07-25 14:17:09

标签: mysql

我有两张桌子: 表A有一个记录列表。

RecordID  DateTime              ClientID
1         2017-07-01 17:20:21   1
2         2017-07-01 17:01:41   2
3         2017-07-01 17:20:30   1
4         2017-07-01 17:10:23   2
5         2017-07-01 17:01:20   2
6         2017-07-01 17:15:11   2
....

表B包含许多客户端的有效记录。

ClientID  Date          ValidRecords
1         2017-07-01    1
2         2017-07-01    2

我需要一个查询,它从表B中获取数字(n),并在表A中记录数量(n)的数据(1或0)。

预期结果:

RecordID  DateTime              ClientID    Valid
1         2017-07-01 17:20:21   1           1
2         2017-07-01 17:01:41   2           1
3         2017-07-01 17:20:30   1           0
4         2017-07-01 17:10:23   2           1
5         2017-07-01 17:01:20   2           0
6         2017-07-01 17:15:11   2           0

客户端1有一个正确的记录,另一个是0。 客户端2有两个正确的记录,因此其他记录应标记为0.

欢迎任何想法。

1 个答案:

答案 0 :(得分:0)

这是一个例子:

我的表格:

Table A
------------------
id | name |
 1 | beer |
 2 | wine |
------------------
table B
-----------------
id | id_table_a
1  | 1

结果:

-------------------------------
id | name | id_table_a | flag |
 1 | beer | 1          | 1    |
 2 | wine | Null       | 0    |
-------------------------------

查询:

select a.*, b.id_table_a, case when b.id is null then 0 else 1 end as flag 
from tablea a
left join tableb b on a.id = b.id_table_a