SQLiteDatabase选择数组限制第一个值

时间:2017-08-11 15:35:47

标签: sql sqlite select

我的查询:

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的其他记录。

子请求是强制性的吗?

1 个答案:

答案 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