作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在 MySQL 中,我试图从数据库中检索单行,除非它不存在,在这种情况下我希望它检索第二行。我已经写出代码,但由于某种原因它正在检索两行。如果未找到第一行,则检索第二行。所以不管它总是检索第二行。
SELECT *
FROM `members`
WHERE
`id` = 49
or `id` = 0
我在具有不同列的不同数据库上尝试了许多变体(when/then/else 等),它总是检索两行。
如何只检索我需要的一行?而且,任何人都可以向我解释为什么这样做吗?
最佳答案
您首先想要哪一行? id = 49
?您可以尝试将 mysql 的 ORDER BY
与 LIMIT
结合使用以获得您想要的结果。例如,如果你想先获得 id 49,你可以这样做:
SELECT * FROM members WHERE id = 49 OR id = 0 ORDER BY FIELD(id, 49, 0) LIMIT 1
这将按字段 id
对结果进行排序,但将结果限制为仅一行。因此,如果不存在 id = 49
的行,它仍然会在您的列表中获得第一行,即 id = 0
关于MySQL IF/WHEN/ELSE/OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33838631/
我是一名优秀的程序员,十分优秀!