2014-03-13 22 views
-1

有人可以解釋爲什麼以下查詢返回每行5份?我做了什麼錯?:mysql JOIN不工作我認爲應該如何

(
SELECT user_id, act_id, act_date, act_score, users.posts_check, 'act' AS 
'type' FROM actsWithScore 
JOIN users 
WHERE user_id 
IN (1, 5) 
) 
UNION ALL (

SELECT user_voter, act_id, vote_date, vote_score, users.posts_check, 'vote' AS 
TYPE FROM votes 
JOIN users 
WHERE user_voter 
IN (1, 5) 
) 
LIMIT 0 , 50 

我得到以下結果:

user_id act_id act_date   act_score posts_check   TYPE 
1  1  2014-02-05 05:25:25  NULL 2014-03-13 06:52:51 act 
1  1  2014-02-05 05:25:25  NULL 0000-00-00 00:00:00 act 
1  1  2014-02-05 05:25:25  NULL 0000-00-00 00:00:00 act 
1  1  2014-02-05 05:25:25  NULL 0000-00-00 00:00:00 act 
1  1  2014-02-05 05:25:25  NULL 0000-00-00 00:00:00 act 
1  2  2014-02-05 05:28:16  1  2014-03-13 06:52:51 act 
1  2  2014-02-05 05:28:16  1  0000-00-00 00:00:00 act 
1  2  2014-02-05 05:28:16  1  0000-00-00 00:00:00 act 
1  2  2014-02-05 05:28:16  1  0000-00-00 00:00:00 act 
1  2  2014-02-05 05:28:16  1  0000-00-00 00:00:00 act 

05是正確的,但不知道爲什麼,他們正在複製?

+0

爲什麼不正常的加入ON子句? –

+0

用表格內容更新問題或創建一個SQL小提琴,這將有助於給出正確的答案。 – Naveen

+0

下面的答案工作。爲什麼地獄會倒下?在需要一些合法幫助之前,我從來不需要使用'JOIN'。我提供了很多信息。如果Madhivanan能夠得到它,爲什麼你不能?也許你應該給自己倒下! – Wildcard27

回答

3

你忘了加入表格。它應該是

(
SELECT user_id, act_id, act_date, act_score, users.posts_check, 'act' AS 
'type' FROM actsWithScore 
JOIN users on actsWithScore.user_id=users.user_id 
WHERE user_id 
IN (1, 5) 
) 
UNION ALL (

SELECT user_voter, act_id, vote_date, vote_score, users.posts_check, 'vote' AS 
TYPE FROM votes 
JOIN users on votes.user_id=users.user_id 
WHERE user_voter 
IN (1, 5) 
) 
LIMIT 0 , 50 
+0

謝謝。我很高興你可以幫忙解答問題,而不是完全無用的downvote! – Wildcard27

相關問題