2012-05-09 44 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 

ERROR MESSAGE: # 1064 - Bạn có một lỗi trong cú pháp SQL của bạn; kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn cho đúng cú pháp để sử dụng gần 'UNION (SELECT J.act_id FROM Joinin J WHERE J.user_id = 'lhfcws')) ORDE' at line 7Lỗi cú pháp trong MySQL gần UNION?

Hoạt động (act_id, user_id, act_name)
Joinin (act_id, user_id)

+0

bản sao có thể có của [MySQL 3.23 UNION không thành công với Lỗi 1064] (http://stackoverflow.com/questions/9202667/mysql-3-23-union-fails-with-error-1064) – Makoto

+0

Bản sao đó không có một câu trả lời thỏa đáng [được chấp nhận]; cái này có. –

Trả lời

6

Lý do lỗi của bạn là dấu ngoặc xung quanh các câu SELECT. Bạn nên viết như sau:

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 

Nhưng hãy xem qua @ Raphaël Althaus ý tưởng để cải thiện truy vấn của bạn.

+0

đã nhận nó! thx cho sự giúp đỡ của bạn ~! – Lhfcws

2

Hmm, không nghĩ rằng bạn cần như một subquery

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

Linh hồn làm như vậy

có thể bạn cần một hơn séc

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); 

Theo cách @ Jonathan Leffler của (true) nhận xét

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 là OR; bạn có nghĩa là OR EXISTS? –

+0

oops, bạn nói đúng, thx, phiên bản thứ 3 có vẻ đúng với bạn? –

+0

wow ~! Nó hoạt động! thx rất nhiều ~~ nhưng tôi vẫn tự hỏi tại sao tôi đã sai ~~ – Lhfcws

Các vấn đề liên quan