如果没有行,如何返回值?

时间:2018-01-19 09:07:25

标签: sqlite missing-data ifnull

我通过Qml + JS从表中读取数据并且我需要返回100才是查询未找到数据:

SELECT (CASE
        WHEN pourcenthour < pourcentcycle AND pourcenthour  < pourcentmonth THEN pourcenthour
        WHEN pourcentcycle < pourcenthour AND pourcentcycle < pourcentmonth THEN pourcentcycle
        WHEN pourcentmonth < pourcenthour AND pourcentmonth < pourcentcycle THEN pourcentmonth
        ELSE 100
        END) AS pourcent,
       ata,
       immatriculation
FROM part_log
WHERE removed = "false" AND immatriculation =? AND ata=?
ORDER BY pourcent DESC LIMIT 1

我试试这个:

SELECT IFNULL((CASE WHEN ... ELSE 100 END),100) AS pourcent, ...

我收到了错误:

  

无法读取未定义的属性'pourcent'

我试试这个:

SELECT IFNULL(SELECT (CASE WHEN ... ELSE 100 END) ,100) AS pourcent

我收到了这个错误:

  

错误:靠近“SELECT”:语法错误Impossible d'exécuterl'指令

1 个答案:

答案 0 :(得分:0)

您在SELECT子句中编写的内容将针对每一行进行一次评估。这意味着如果没有行,SELECT子句中的任何内容都无法帮助您。

您可以使用compound query添加另一行。最终的LIMIT确保只返回part_log行(如果找到):

SELECT *
FROM (SELECT CASE ... END AS pourcent, ata, immatriculation
      FROM part_log
      WHERE removed = "false" AND immatriculation =? AND ata=?
      ORDER BY pourcent DESC LIMIT 1)
UNION ALL
SELECT 100, NULL, NULL
LIMIT 1;