2011-11-10 14 views
7

我需要从表中选择具有特定ID的行,但如果该行不存在,则需要选择第一行。是否可以在单个查询中完成?MySQL如果不存在,选择另一行

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

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

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

+0

它可能是可能的,但取决于几个方面...请显示一些表结构,SQL查询...你试过了什么?你如何识别“第一排”? – Yahia

+0

从关系的角度来看,没有第一行这样的事情,因为表格没有自然顺序。你的订单是什么决定第一行? – outis

+0

我的意思是最低编号的行。 – Headshota

回答

9

选择该行试试这个:

SELECT * FROM 
    (SELECT * FROM your_table 
     WHERE id = your_id 
     LIMIT 1 
    UNION 
    SELECT * FROM your_table 
     LIMIT 1) a 
LIMIT 1 

这个想法是采取第一个期望的行,并追加到这第一行,最后采取第一个。如果所需的行不存在,第一个将被选中...

+0

非常感谢! – Headshota

+0

这是保证返回特定的一个,如果它在那里?我不希望'union'语句保留返回行的顺序,以至于即使存在特定的行,仍然可以在此查询中返回“顶部”行。 – kdawg

3
SELECT * FROM (
    SELECT * FROM table1 WHERE [..your criteria...] LIMIT 1 
    UNION 
    SELECT * FROM table1 LIMIT 1  
) LIMIT 1 
相关问题