2012-03-16 17 views
6

tengo problema con esta consulta SQL:"no se puede utilizar en la cláusula orden global" con MySQL ordenar

(SELECT tb1.id,tb1.bdate,tb1.jumpCard,tb1.publicImage,tb1.lastlogin 
FROM users AS tb1, online AS tb2 
WHERE tb1.valid='1' AND tb1.sex='female' AND tb1.looking_for='male' AND tb1.id = tb2.member_id 
ORDER BY tb1.publicImage) ORDER BY tb1.id DESC 

por alguna razón estoy recibiendo:

Table 'tb1' from one of the SELECTs cannot be used in global ORDER clause 

algún consejo?

Gracias

Respuesta

8

La razón por la que no funciona es el exterior ORDER BY no puede "ver" TB1 - que ve los resultados de la subconsulta interior . Así, en una versión sintácticamente correcta de la consulta, sólo tendría que ORDER BY id:

(SELECT tb1.id,tb1.bdate,tb1.jumpCard,tb1.publicImage,tb1.lastlogin 
FROM users AS tb1, online AS tb2 
WHERE tb1.valid='1' AND tb1.sex='female' AND tb1.looking_for='male' AND tb1.id = tb2.member_id 
ORDER BY tb1.publicImage) ORDER BY id DESC 

Pero, como otros están señalando, esto puede más simplemente escribe como una sola consulta ordenados por ID

+0

Tienes que salvar mi vida –

3

Si pones paréntesis alrededor de su select continuación, la tabla interna no será visible fuera

SELECT tb1.id,tb1.bdate,tb1.jumpCard,tb1.publicImage,tb1.lastlogin 
FROM users AS tb1, online AS tb2 
WHERE tb1.valid='1' AND tb1.sex='female' AND tb1.looking_for='male' AND tb1.id = tb2.member_id 
ORDER BY tb1.publicImage, tb1.id DESC 

Y se puede especificar varias columnas en una order by cláusula

2

Cuando cierra el paréntesis después de la instrucción select, su segunda cláusula order by deja de ser válida. En lugar de tratar la fusión de su pedido por columnas en una sola order by declaración como la siguiente:

SELECT tb1.id,tb1.bdate,tb1.jumpCard,tb1.publicImage,tb1.lastlogin 
FROM users AS tb1, online AS tb2 
WHERE tb1.valid='1' AND tb1.sex='female' AND tb1.looking_for='male' AND tb1.id = tb2.member_id 
ORDER BY tb1.publicImage, tb1.id DESC 
Cuestiones relacionadas