2011-11-10 35 views
7

Necesito seleccionar una fila de la tabla con la identificación específica, pero si la fila no existe, necesito seleccionar la primera fila. ¿Es posible hacerlo en una sola consulta?MySQL Seleccione otra fila si no existe

ejemplo: Tengo una tabla con un id y campos de texto. y tengo 3 filas de la tabla

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

tengo que seleccionar la primera fila si digamos SELECT * FROM myTable WHERE id = 4 no existe si no, seleccione la fila con id 4.

+0

podría ser posible, pero eso depende de varios aspectos ... por favor muestre alguna estructura de tabla, consulta SQL ... ¿qué ha intentado? ¿cómo identificas la "primera fila"? – Yahia

+0

Desde un punto de vista relacional, no existe una primera fila porque las tablas no tienen un orden natural. ¿Cuál es su orden para determinar la primera fila? – outis

+0

Me refiero a la fila con la identificación más baja. – Headshota

Respuesta

9

Prueba esto:

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

La idea es tomar la primera fila deseada y agregarla a esta primera fila, finalmente tomando la primera. Si la fila deseada no existe, se seleccionará la primera ...

+0

¡Gracias genial! – Headshota

+0

¿Se garantiza que devolverá el específico si está allí? No esperaría que la instrucción 'union' conservara el orden de las filas devueltas, de modo que la fila" superior "aún podría ser devuelta en esta consulta, incluso si existe la específica. – kdawg

3
SELECT * FROM (
    SELECT * FROM table1 WHERE [..your criteria...] LIMIT 1 
    UNION 
    SELECT * FROM table1 LIMIT 1  
) LIMIT 1 
Cuestiones relacionadas