【发布时间】:2012-09-09 02:48:13
【问题描述】:
我有这种简单的查询,它为给定的 id 返回一个非空整数字段:
SELECT field1 FROM table WHERE id = 123 LIMIT 1;
问题是如果没有找到 id,结果集是空的。我需要查询始终返回一个值,即使没有结果。
我有这个东西工作,但我不喜欢它,因为它运行相同的子查询 2 次:
SELECT IF(EXISTS(SELECT 1 FROM table WHERE id = 123) = 1, (SELECT field1 FROM table WHERE id = 123 LIMIT 1), 0);
如果该行存在则返回field1,否则返回0。有什么方法可以改进吗?
谢谢!
编辑以下一些 cmets 和答案:是的,它必须在 单个查询语句中,我不能使用计数技巧,因为 我需要返回只有 1 个值(仅供参考,我使用 Java/Spring 方法 SimpleJdbcTemplate.queryForLong() 运行查询)。
【问题讨论】:
-
这需要在单个查询语句中完成吗?否则,您可以使用默认值声明一个变量,选择其中,然后选择该变量。
标签: mysql