我有一個表需要通過同一個表內的其他響應進行過濾。我使用下面的腳本,但是當有'Customer.customer_id'(有時候會有)重複時,結果會出現偏差。我的問題是,是否有更好的方法來重寫此代碼以避免這種情況,因此它只從「客戶」表中選擇不同的結果?通過初始調查響應篩選器響應
因爲有重複的條目下面的示例表應該只返回「兩個的迴應CUSTOMER_ID「10」(下面的基於查詢)
樣品表:
[res_id] [question_id] [customer_id] [survey_id] [res_answer]
1 20 10 155 male
1 20 11 155 male
1 20 10 155 male
1 20 12 155 female
當前查詢:
SELECT
Responses.res_id AS responseID
,Responses.res_col AS answer
,Responses.res_created AS dateCreated
,Responses.res_notes AS note
,Responses.question_id AS questionID
,Responses.customer_id AS customerID
,Responses.res_answer AS subQuestion
,Responses.survey_id AS surveyID
,Responses.res_void AS void
,Customer.res_answer AS filter
FROM
Responses, Responses AS Customer
WHERE
rs.customer_id = Customer.customer_id
AND
Responses.survey_id ='155'
AND
Customer.survey_id = '155'
AND
Responses.question_id = '20'
AND CAST(Customer.res_answer AS VARCHAR(500)) = 'male'
AND Responses.res_void = '0'
請編輯您的問題標籤以包括您正在使用的dbms和版本 – 2013-04-05 15:15:39
@AaronKurtzhals [tag:tsql]使它變得很明顯。 – Kermit 2013-04-05 15:19:05
**(1)**我是否有權假定您的平臺是MS SQL Server? **(2)**在你的樣本中,我不明白你爲什麼認爲它應該是** 2 **行。不應該是** 3 **行? **(3)**您正在執行'LEFT JOIN',然後使用您的'WHERE rs.customer_id = Customer.customer_id'將其有效轉換爲'INNER JOIN'。是否有一個原因? – 2013-04-05 15:19:36