我有两张表需要加入,具体取决于它们的值。
TABLE coursemat
+-----+--------+----------+
| txt | price | material |
+-----+--------+----------+
Table coprices
+--------+----------+
| price | material |
+--------+----------+
它们通过material
键连接。
如果我搜索coursemat.material
并发现coprices.material
相等,那么我必须使用coprices.price
代替coursemat.price
。
这是我到目前为止所做的:
SELECT coursemat.txt, coursemat.price, coursemat.material, coprices, country
FROM coursemat
JOIN corprices ON coursemat.material = coprices.material;
但这并没有得到我想要的东西。
基本上,我想使用coursemat.price
如果同一资料不存在coprices.price
并且coprices.material
确实存在,那么我想使用coprices.price
代替{coursemat.price
1}}。
答案 0 :(得分:3)
如果我理解你想要什么,你可以使用左连接和IFNULL语句:
SELECT
coursemat.txt,
IFNULL(coprices.price, coursemat.price),
coursemat.material,
coprices.country
FROM
coursemat
LEFT JOIN
corprices
ON coursemat.material = coprices.material;
答案 1 :(得分:1)
另一个选择是COALESCE:
SELECT cm.txt, cm.material, COALESCE(cp.price, cm.price) AS price
FROM coursemat cm
LEFT JOIN corprices cp ON cm.material = cp.material;
最后,您还可以使用CASE语句:
SELECT cm.txt, cm.material,
CASE WHEN cp.price IS NOT NULL THEN cp.price ELSE cm.price END AS price
FROM coursemat cm
LEFT JOIN corprices cp ON cm.material = cp.material;