我有一个清单Products
upc | name | price | qty
----------------------------
1 | apple | 1.00 | 3
2 | peach | 2.00 | 7
3 | melon | 1.75 | 2
和SaleProducts
upc | price
------------
2 | 1.90
我想从 Products 中选择,还想从 SaleProducts 中选择销售价格(如果产品在打折)。这就是我想出的:
SELECT t1.upc, t1.name, MIN(t1.price) AS 'price', t1.qty
FROM (
SELECT p.upc, p.name, p.price, p.qty
FROM products p
UNION
SELECT sp.upc, NULL, sp.price, NULL
FROM saleproducts sp
) t1
GROUP BY t1.upc;
输出:
upc | name | price | qty
----------------------------
1 | apple | 1.00 | 3
2 | peach | 1.90 | 7
3 | melon | 1.75 | 2
任何人都可以提出一种更优雅的方式来实现这一点吗?我知道类似的问题,但我的目标是抓住价格较低的那个,所以COALESCE
行不通。
唯一的限制是,我必须使用普通 SQL,没有存储过程或 IF。