2011-03-27 52 views
0
SELECT 'Q' AS TYPE, 
     q.question AS value, 
     q.date 
    FROM questions q 
WHERE q.user_id =39 
UNION ALL 
SELECT 'A' AS TYPE, 
     q.question AS value, 
     a.date 
    FROM answers a, 
     questions q 
WHERE a.question_id = q.id 
    AND WHERE a.user_id =39 
ORDER BY `date` DESC 

数据库设计:这个UNION ALL mysql查询有什么问题?

  • 问题{ID,USER_ID,问题,日期}
  • 解答{ID,question_id,USER_ID,接听,日期}

错误:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE a . user_id = 39 ORDER BY date DESC

+0

'WHERE'关键字每个SELECT语句只使用一次。删除重复,并且您的查询将工作。 – 2011-03-27 17:22:08

回答

2

在查询的下半部分有两个WHERE子句。你需要从字面上删除最后一个单词WHERE。错误描述是你需要的。

1

“WHERE”出现两次。其中x = ..... AND ....

1

有一个额外的地方a.user_id = 39。您只使用关键字在WHERE子句的开始(a.question_id = q.id AND a.user_id = 39)

SELECT 
'Q' AS TYPE , q.question AS value, q.date 
FROM questions q 
WHERE q.user_id =39 
UNION ALL 
SELECT 'A' AS TYPE , q.question AS value, a.date 
FROM answers a,questions q 
WHERE a.question_id = q.id 
AND 
a.user_id =39 
ORDER BY `date` DESC 
1

由于错误试图解释:对于第二个选择,你只需要把一个“WHERE”。

SELECT 'A' AS TYPE , q.question AS value, a.date 
FROM answers a,questions q 
WHERE a.question_id = q.id 
AND 
a.user_id =39