MySQL联接查询两个表

时间:2015-12-17 21:38:54

标签: mysql

我有两个数据库表。我们将第一个称为ItemInfo,将另一个称为ItemStatus。信息是两者中较大的一个,而Status仅使用Info下列出的活动产品创建(Active = 1)。 Info和Status之间只共享两列,即ListID和QtyOnHand。

Status的问题在于,即使已经记录了所有活动项目,但并非所有活动项目都具有正确的Web ID,这些ID位于ItemInfo标记为" WebID的列下。"没有正确ID的项目的ID为0。

我想要做的是在两者之间进行连接,但我不确定要使用哪种连接。我最初认为正确的加入是正确的。我需要ItemStatus中的每一列(因为它包含由脚本计算和插入的统计信息),但只需要那些具有有效Web ID的记录。我知道查询看起来像这样:

SELECT A.*, B.WebID FROM ItemStatus A
(?) JOIN ItemInfo B
ON A.ListID = B.ListID
WHERE B.WebID > 0

这个想法在那里,但我不确定如何表达它。状态表没有WebID,因为当我最初构建它时,我觉得它有一个列是多余的。我们需要QtyOnHand的原因是因为它的计算方式与对ItemInfo所做的不同。

如何修复此查询?

2 个答案:

答案 0 :(得分:0)

我认为你需要正确的加入

SELECT A.*, B.WebID FROM ItemStatus A
LEFT JOIN ItemInfo B
ON A.ListID = B.ListID
WHERE B.WebID > 0

答案 1 :(得分:0)

你只从B中取]所以你只需要WebID - 意味着内部联接;

JOIN

它将一个表中的所有行连接到另一个表中的行,然后应用SELECT A.*, B.WebID FROM ItemStatus A JOIN ItemInfo B ON A.ListID = B.ListID WHERE B.WebID > 0 条件。因此,返回正数WHERE所需的行。

希望这有帮助!