MySQL:在IF()语句中使用SELECT

3
我能要类似这样的东西吗?
SELECT IF((SELECT COUNT(id) FROM table WHERE id = 1) = 0, 1, <nothing_to_happen>) AS Available

我的目标是选择这个:
+---------+
|Available|
+---------+
|1        |
+---------+

只有在此查询中没有选定任何行时才能执行:
SELECT id FROM table WHERE id = 1

如果表中存在id = 1的行,则我希望我的查询返回零行!这可能吗?
2个回答

5
SELECT  1
FROM    dual
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    mytable
        WHERE   id = 1
        )

使用LEFT JOIN并过滤NULL可能是另一种更快的解决方案。 - Csq
5.1 中它稍微快了一点,在 5.5 中变得相同。 - Quassnoi
MySQL 从什么时候开始有 dual 表的? - user330315

0

查询:

SELECT CASE
           WHEN COUNT(id) = 0 THEN 1
           ELSE 0
       END AS Available
FROM `TABLE`
WHERE id = 1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接