如果“表a”“列a”与“表b”“列a”匹配,则如何将“表a”“列b”替换为“表b”“列b”

d8tt03nd  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(330)

我有两张tablebelow:-
表a

-------------------------------
| product_id | price           |
-------------------------------
| 1          | 2.2000          |
| 2          | 0.0000          |
| 3          | 0.3333          |

表b

-------------------------------
| product_id | price_discount  |
-------------------------------
| 1          | 1.8000          |

如何使用select语句选择上述两个表的价格范围?
example:- SELECT * FROM TABLE A WHERE**price or price discount**BETWEEN 0 AND 2; 预期结果将显示由于产品id有折扣价格=1.8(在0到2的价格范围内)。

-------------------------------
 | product_id | price           |
 -------------------------------
 | 1          | 2.2000          |
 | 2          | 0.0000          |
 | 3          | 0.3333          |

请帮忙。谢谢您。

ffscu2ro

ffscu2ro1#

一个简单的 LEFT JOIN 在这两张table之间就够了。 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

上面的解决方案是基于这样一个假设,即有0或1行对应于一个 `product_id` 在 `tableb` . 如果能有更多,那么 `GROUP BY` 可能需要。

相关问题