我尝试创建一个标志,如果表B中存在来自表A的id,则返回该标志示例:
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 |
-------------------------------
其中标志1 =存在于另一个表中,或者0 =不存在
请建议或链接!! 注意 - 没有创建行标志可能存在一个可能性创建一个时间标志o任何建议...... !!
答案 0 :(得分:1)
尝试以下方法:
SELECT a.id, a.name, b.id, CASE WHEN b.id>0 THEN 1 ELSE 0 END flag
FROM tableA AS a LEFT JOIN tableB AS b ON b.id_table_a=a.id
编辑:更改了on
- 子句。谢谢@amflare的暗示!样本数据很短,我忽略了它。 : - )
这是另一种方式:
SELECT a.id, a.name, b.id, CAST(COALESCE( b.id, 0) AS BIT) flag
FROM tableA AS a LEFT JOIN tableB AS b ON b.id_table_a=a.id
答案 1 :(得分:1)
这就是你要找的东西:
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
答案 2 :(得分:0)
SELECT *, IF(EXISTS(b.id_table_a),(b.id_table_a IS NOT NULL),0) AS flag
FROM TABLEA a
JOIN TABLEB b on a.id = b.id_table_a
这样的东西应该可以工作,因为括号中的位将评估true / false,而mysql显示true为1,false显示为0.