我有2张桌子,如下所示:-
表A
-------------------------------
| product_id | price |
-------------------------------
| 1 | 2.2000 |
| 2 | 0.0000 |
| 3 | 0.3333 |
表B
-------------------------------
| product_id | price_discount |
-------------------------------
| 1 | 1.8000 |
如何使用select语句如上所述选择2个表的价格范围?
示例:-SELECT * FROM TABLE A WHERE **price or price discount** BETWEEN 0 AND 2;
由于product_id的折扣价格= 1.8(0到2价格范围内),因此将显示预期结果。
-------------------------------
| product_id | price |
-------------------------------
| 1 | 2.2000 |
| 2 | 0.0000 |
| 3 | 0.3333 |
请帮助。谢谢。
答案 0 :(得分:2)
两个表之间一个简单的LEFT JOIN
就足够了。之所以LEFT JOIN
是因为我们在两个表之间可以有不匹配的行。
编辑:先前版本对tb.price_discount IS NOT NULL
进行了额外检查;但实际上并不需要,BETWEEN..AND
就足够了。
OR
操作员文档中对1 OR NULL = 1
SELECT ta.*
FROM tablea AS ta
LEFT JOIN tableb AS tb
ON ta.product_id = tb.product_id
WHERE ta.price BETWEEN 0 AND 2
OR
tb.price_discount BETWEEN 0 AND 2
以上解决方案基于以下假设:product_id
中将有0或1行对应于tableb
。如果还有更多,则可能需要GROUP BY
。