0

这是情况。我有两组数据。一个是我的系统使用的所有“票证”条目的列表——每个 ID 至少一个,但可能更多。我还有一个单独的列表,其中仅列出了已知硬件问题的 ID,它是 ID 的一个相对较小(但很重要)的子集。我已将此列表放入一个超级简单的表 B 中,它实际上是一个只有这些 ID 的单列。

我需要一个连接这两个表的 MySQL 查询,所以我从表 A 中获取所有条目,每个条目都添加了另一个字段,该字段是一个简单的布尔值:表 B 中是否存在相同的 ID。

所以是这样的:

SELECT * FROM `table_A` A
LEFT JOIN `table_B` B ON A.id=B.id

如果 B 是一个双列表,并且第二列(称为它down)只是true在每一行中,那么我可以检查 if downare trueor null

但由于 B 只有一列,因此实际上没有将数据添加到结果中。

是否有任何简单的方法(在我的数据库中没有这个完全不必要的列)来执行此“连接”操作,它会简单地注意 A 中给定条目的 ID 是否也存在于 B 中?

(将另一个向上或向下的字段添加到 A 也相当低效,因为单个 ID 通常有很多行,并且大多数 ID 无论如何都不会向下)

4

2 回答 2

3
select 
    A.*, 
    case when B.ID is null then 0 else 1 end as myBoolean
from `table_A` A
    left join `table_B` B on A.ID = B.ID
于 2012-09-21T16:28:32.570 回答
2

如果 id 存在于 table_B 中,则下面的示例“down”将不为空

SELECT * , B.id as `down` FROM `table_A` A
LEFT JOIN `table_B` B ON A.id=B.id
于 2012-09-21T16:24:30.550 回答