我的查询:
SELECT t1.*, t2.*, t3.*
FROM table1 t1, table2 t2, table3 t3
WHERE t1.id = t2.idT1 AND t2.id = t3.idT2 AND
t3.value IN (1,2,3,4)
但我只希望table3的第一行代表数组中的值。 示例:如果value = 2,我只想要此记录而不是其他值= 3或4的其他记录。
子请求是强制性的吗?
答案 0 :(得分:1)
只需按值排序并将结果限制为一行。
SELECT t1.*, t2.*, t3.*
FROM table1 t1
JOIN table2 t2
ON t1.id = t2.idT1
JOIN table3 t3
ON t2.id = t3.idT2
WHERE t3.value IN (0,2,25,75)
ORDER BY t3.value
LIMIT 1
订单评论后:您需要添加自定义订单。这种方式即使t3.value
匹配多个值,您仍然会获得第一个值。
ORDER BY CASE WHEN t3.value = 75 THEN 1
WHEN t3.value = 2 THEN 2
WHEN t3.value = 25 THEN 3
WHEN t3.value = 0 THEN 4
END