2012-05-09 29 views
5
SELECT * 
FROM Activity AA 
WHERE AA.act_id IN 
((SELECT A.act_id 
    FROM Activity A 
    WHERE A.user_id = 'lhfcws') 
UNION 
(SELECT J.act_id 
    FROM Joinin J 
    WHERE J.user_id = 'lhfcws')) 
ORDER BY AA.act_time 

MENSAJE DE ERROR: # 1064 - Usted tiene un error en su sintaxis SQL; compruebe el manual que corresponde a su versión del servidor MySQL para el sintaxis derecho al uso cerca de 'UNION (SELECT J.act_id FROM Joinin J WHERE J.user_id = 'lhfcws')) ORDE' at line 7Error de sintaxis en MySQL cerca de UNION?

Actividad (act_id, user_id, act_name)
joinin (act_id, user_id)

+0

posible duplicado de [MySQL 3.23 UNION falla con el error 1064] (http://stackoverflow.com/questions/9202667/mysql-3-23-union-fails-with-error-1064) – Makoto

+0

Ese duplicado no tiene una respuesta satisfactoria [aceptada]; este lo hace –

Respuesta

6

La razón de su error es los parens alrededor de las sentencias de selección. Debe escribirlo como:

SELECT * 
FROM Activity AA 
WHERE AA.act_id IN 
(SELECT A.act_id 
    FROM Activity A 
    WHERE A.user_id = 'lhfcws' 
UNION 
SELECT J.act_id 
    FROM Joinin J 
    WHERE J.user_id = 'lhfcws') 
ORDER BY AA.act_time 

Pero revise las ideas @ Raphaël Althaus para mejorar su consulta.

+0

lo tengo! gracias por su ayuda ~! – Lhfcws

2

Hmm, no lo hacen cree que necesita una subconsulta tales

select * from Activity a 
where a.user_id = 'lhfcws' 
and exists (select null from Joinin j 
where a.user_id = j.user_id); 

sould hacer lo mismo

tal vez necesita una más cheque

select * from Activity a 
    where a.user_id = 'lhfcws' 
    and exists (select null from Joinin j 
    where a.user_id = j.user_id 
    and a.act_id = j.act_id); 

según (verdadero) el comentario de @ Jonathan Leffler

select * from Activity a 
     where a.user_id = 'lhfcws' 
     or exists (select null from Joinin j 
     where j.user_id = 'lhfcws' 
     and a.act_id = j.act_id); 
+0

UNION es un OR; ¿Quieres decir O EXISTE? –

+0

oops, tienes razón, thx, tercera versión parece correcta para usted? –

+0

wow ~! Funciona! thx mucho ~~ pero aún me pregunto por qué estaba equivocado ~~ – Lhfcws

Cuestiones relacionadas