【问题标题】:case not working as desired in mysql querycase 在 mysql 查询中无法正常工作
【发布时间】:2011-05-09 05:45:59
【问题描述】:

我使用带有 case 语句的以下查询--

SELECT case WHEN t1.abc !='' THEN 1 ELSE 0 END as ids FROM
 table1 AS t1 LEFT JOIN table2 as t2
 ON t1.pid = t2.id
 WHERE t2.idr IS NULL and t1.idr=23

当查询返回一行时,我在 ids 中得到 1,但当查询没有返回任何内容时,则不返回 0。为什么会这样??

我需要的是,当查询返回一行时,它应该返回 1,如果没有显示结果,那么它应该返回 0。我哪里出错了??

【问题讨论】:

  • 我猜你必须使用<>,而不是!=
  • 没有结果是一样的,即使是
  • 啊!现在我看到了这个问题,对不起。这不是它的工作原理。您应该检查查询后是否返回值。
  • 对于 id 23,我的查询没有返回任何值,即没有值,在这种情况下,我希望它返回 0。

标签: php mysql sql


【解决方案1】:

如果您只关心如何获得 1 或 0。试试下面的示例查询

SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END ids
    FROM table1 t1 INNER JOIN table2 t2 ON t1.pid = t2.id
    WHERE t2.idr IS NULL
    AND t1.idr = 123;

在您的情况下,当现在有行时您没有得到 0 的原因。因为没有什么可比的。好吧,这只是一个猜测,但这就是我的想法。

如果结果没有返回任何行,则让 php 处理。见here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 2023-02-06
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    相关资源
    最近更新 更多