【问题标题】:How to return value if there is no row?如果没有行如何返回值?
【发布时间】:2018-06-28 11:34:18
【问题描述】:

我通过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écuter l'instruction

【问题讨论】:

  • 消息“无法读取未定义的属性 'pourcent'”并非来自 SQLite。并且“如果没有记录记录”是不正确的英语语法。您是否正在尝试从表中读取数据?
  • 我通过 Qml + JS 从表中读取数据,如果查询未找到数据,我需要返回 100。这里是完整的查询:'SELECT (CASE WHEN pourcenthour &lt; pourcentcycle AND pourcenthour &lt; pourcentmonth THEN pourcenthour WHEN pourcentcycle &lt; pourcenthour AND pourcentcycle &lt; pourcentmonth THEN pourcentcycle WHEN pourcentmonth &lt; pourcenthour AND pourcentmonth &lt; pourcentcycle THEN pourcentmonth ELSE 0 END) AS pourcent, ata, immatriculation FROM part_log where removed = "false" and immatriculation =? and ata=? order by pourcent desc limit 1'

标签: sqlite missing-data ifnull


【解决方案1】:

您在 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;

【讨论】:

  • 太棒了,正是我需要的!非常感谢!!
  • 请考虑accepting 回答您的问题。
猜你喜欢
  • 1970-01-01
  • 2012-06-01
  • 2018-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多