我有两张表如下:-
表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/

10-12 02:39