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

エラーメッセージ: #1064 - SQL構文に誤りがあります。 UNIONの近くにあるMySQLの構文エラー?

'UNION (SELECT J.act_id FROM Joinin J WHERE J.user_id = 'lhfcws')) ORDE' at line 7近く活動(act_id、USER_ID、act_name)
Joinin(act_id、USER_ID)

+0

[MySQL 3.23 UNIONはエラー1064で失敗する](http://stackoverflow.com/questions/9202667/mysql-3-23-union-fails-with-error-1064) – Makoto

+0

重複はありません満足のいく[受け入れられた]答え。これはそうです。 –

答えて

6

あなたのエラーの原因た内容に応じて、複数のチェックは

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

select文の周りに括弧です。

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 

しかし、あなたの質問を改善するために@RaphaëlAlthausのアイデアを検討してください。

+0

それを得ました!あなたの助けのためのthx〜! – Lhfcws

2

うーん、ないを使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してくださいあなたは同じ

を行うsould多分あなたはいずれかが必要

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

なサブクエリが必要だと思います@ジョナサンレフラーの(本当の)発言

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はORです。あなたはOR存在を意味しますか? –

+0

おっと、そうです、thx、3番目のバージョンが正しいようですか? –

+0

うわ〜!それは動作します!私は間違っていたのですか?〜 – Lhfcws

関連する問題