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)这显然不会发生,除非它有问题,但我不能让它们加入其他任何东西然后插槽匹配在我的情况下,这就是我所能做的一切。
两个表上的项目,数量,价格都不同。我想使用表格中的信息,如果两个匹配,则表格中的插槽匹配,然后输出两个答案。
答案 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
放在来自另一个表的列中。