我需要从具有特定id的表中选择一行,但如果该行不存在,我需要选择第一行。可以在一个查询中完成吗?
例如: 我有一个带有id和文本字段的表。我在表格中有3行
id txt
----------------
1 text1
2 text2
3 text3
如果说SELECT * FROM myTable WHERE id = 4
不存在,我需要选择第一行。否则选择ID为4的行。
答案 0 :(得分:9)
试试这个:
SELECT * FROM
(SELECT * FROM your_table
WHERE id = your_id
LIMIT 1
UNION
SELECT * FROM your_table
LIMIT 1) a
LIMIT 1
我们的想法是先获取所需的行并追加到第一行,最后取出第一行。如果不存在所需的行,则将选择第一行...
答案 1 :(得分:3)
SELECT * FROM (
SELECT * FROM table1 WHERE [..your criteria...] LIMIT 1
UNION
SELECT * FROM table1 LIMIT 1
) LIMIT 1