
[英]how to replace 'table a'.'column b' with 'table b'.'column b' if 'table a'.'column b' matches 'table b'.'column a'
[英]how to replace 'table a'.'column b' with 'table b'.'column b' if 'table a'.'column a' matches 'table b'.'column a'
我有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的Discount_price = 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
额外检查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
以上解决方案基于以下假设: tableb
中将有0或1行对应于product_id
。 如果可以更多,则可能需要GROUP BY
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.