6
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 構文にエラーがあります。近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。'UNION (SELECT J.act_id FROM Joinin J WHERE J.user_id = 'lhfcws')) ORDE' at line 7

Activity(act_id, user_id, act_name)
Joinin(act_id, user_id)

4

3 に答える 3

8

エラーの理由は、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のアイデアを確認してください。

于 2012-05-09T05:57:17.170 に答える
2

うーん、そのようなサブクエリが必要だとは思わないでください

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

同じことをしなければならない

多分あなたはもう1つのチェックが必要です

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

@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);
于 2012-05-09T05:40:28.400 に答える