我有一个简单的查询,针对给定的id返回一个非空整数字段:
SELECT field1 FROM table WHERE id = 123 LIMIT 1;
问题是如果找不到ID,则结果集为空。我需要查询始终返回一个值,即使没有结果。
我已经让这个东西工作了,但我不喜欢它,因为它运行了两次相同的子查询:
SELECT IF(EXISTS(SELECT 1 FROM table WHERE id = 123) = 1, (SELECT field1 FROM table WHERE id = 123 LIMIT 1), 0);
如果该行存在,则返回field1,否则返回0。有没有任何改进的方法?
谢谢!
在查看一些评论和答案后进行编辑:是的,它必须在一个单一的查询语句中,并且我不能使用计数技巧,因为我只需要返回一个值(FYI我使用Java/Spring方法SimpleJdbcTemplate.queryForLong()运行查询)。