我有两张表如下:-
表A
-------------------------------
| product_id | price |
-------------------------------
| 1 | 2.2000 |
| 2 | 0.0000 |
| 3 | 0.3333 |
表B
-------------------------------
| product_id | price_discount |
-------------------------------
| 1 | 1.8000 |
如何使用select语句为上述两个表选择价格范围?
示例:-
SELECT * FROM TABLE A WHERE **price or price discount** BETWEEN 0 AND 2;
由于产品的折扣价格为1.8(在0到2的价格范围内),预期结果将显示出来。
-------------------------------
| product_id | price |
-------------------------------
| 1 | 2.2000 |
| 2 | 0.0000 |
| 3 | 0.3333 |
请帮忙。谢谢您。
最佳答案
简单的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
。关于mysql - 如果'表a'。'列a'与'表b'。'列a'匹配,如何用'表b'。'列b'替换'表a'。'列b',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53531583/