SELECT
*,
p.name AS name,
p.image,
p.price,
(
SELECT ps.price
FROM product_special ps
WHERE p.id = ps.id
AND ps.date < NOW()
ORDER BY ps.priority ASC, LIMIT 1
) AS special_price,
(
SELECT ps.date
FROM product_special ps
WHERE p.id = ps.id
AND ps.date < NOW()
ORDER BY ps.priority ASC, LIMIT 1
) AS date
FROM product p LEFT JOIN product_special ps ON (p.id = ps.id)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我重复相同的子查询只是为了得到另一列。我想知道有没有更好的方法来做到这一点?
id是两个表中的主键。如果有帮助,我可以让product_special.priority变得独一无二。
我在表中有一些数据,如下所示:
product_id | categories
----------------+-------------
10 | 9,12
11 | 8
12 | 11,18,5
Run Code Online (Sandbox Code Playgroud)
我想要一个会产生这个输出的选择语句:
product_id | category_id
----------------+-------------
10 | 9
10 | 12
11 | 8
12 | 11
12 | 18
12 | 5
Run Code Online (Sandbox Code Playgroud)
我不知道如何表达这种情况才能用谷歌搜索它。