跨表验证数据是否存在

Verifying existence of data accross tables

假设我有一个包含以下两个表的数据库:

Table_A                    Table_B
id                         val_A
val                        ...
...                       

现在我需要在 Table ASELECT 执行以下操作:

SELECT id, val, ..., isInB FROM Table_A WHERE ....

其中...是我需要的 Table_A 中的任何其他字段,isInB 将是 1 或 0,具体取决于 Table_A.val 是否存在于 Table_B.val_A[=17 中=]

这可以做到吗?

您只需 LEFT JOIN 两个表:

SELECT ta.id,
       ta.val,
       CASE WHEN tb.val_A IS NULL THEN 0 ELSE 1 END AS isInB
FROM table_A ta
LEFT JOIN table_B tb ON ta.val = tb.val_A

试试这个

SELECT Table_A.id, Table_A.val, IF(table_B.val_A IS NULL, 0, 1) as isInB
FROM
    Table_A
    LEFT OUTER JOIN Table_B on Table_A.val = Table_B.val_A