SQLite如何匹配多个表中的一列,然后只返回其中一个表并仅添加缺少的列

时间:2013-12-15 11:20:14

标签: sql sqlite

SQLite如何匹配多个表中的一列,然后只返回其中一个表。

如果我运行两个查询并且其中一个查询将始终返回0行,那么我可以执行此操作,其他一个将始终返回1,反之亦然。

我有一个包含列的表 item, amount, price, sold, slot
另一个有列的表格 item, amount, price, bought, slot

我希望一次只根据我想要的插槽中的插槽来匹配两个表。

无论如何,两个表都不能同时使用相同的插槽, 但是如果在两个表使用相同插槽的软件中发生了一些错误,那么它应该输出2行应该可能发生一行应该已售出NULL其他行应该已经购买了类似的东西。

即使它正常工作,输出行也应该已售出并购买其中一个为NULL,因此我可以检测到它是哪种表。

这是我到目前为止没有返回任何内容

SELECT * FROM Buying B INNER JOIN Selling S USING(slot) WHERE B.slot = 0 OR S.slot = 0

这是SELECT

之后我想要的
SELECT item, amount, price, bought, sold FROM Buying B INNER JOIN Selling S USING(slot) WHERE B.slot = 0 OR S.slot = 0

我知道使用USING命令我正在做(B.slot = S.slot)这显然不会发生,除非它有问题,但我不能让它们加入其他任何东西然后插槽匹配在我的情况下,这就是我所能做的一切。

两个表上的项目,数量,价格都不同。我想使用表格中的信息,如果两个匹配,则表格中的插槽匹配,然后输出两个答案。

1 个答案:

答案 0 :(得分:1)

使用UNION:

SELECT item, amount, price, bought, NULL sold, slot
FROM Buying
WHERE slot = 0
UNION
SELECT item, amount, price, NULL bought, sold, slot
FROM Selling
WHERE slot = 0

每个子查询将NULL放在来自另一个表的列中。