MySQL如果不存在,则选择另一行

时间:2011-11-10 07:29:01

标签: mysql

我需要从具有特定id的表中选择一行,但如果该行不存在,我需要选择第一行。可以在一个查询中完成吗?

例如: 我有一个带有id和文本字段的表。我在表格中有3行

id    txt
----------------
1     text1
2     text2
3     text3

如果说SELECT * FROM myTable WHERE id = 4不存在,我需要选择第一行。否则选择ID为4的行。

2 个答案:

答案 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