2012-11-29 116 views
-1

我想要一份找出如何建立一個單一的MySQL查詢檢索*用於在數據庫中的所有TESTIDs。因此,不用爲每個唯一的TESTID運行一個for循環來生成多個數據庫調用,如下所示,我可以簡單地運行一個查詢。優化的單MySQL查詢需要

select * from test_results where TESTERID='3' and TESTID='5' 
select * from test_results where TESTERID='3' and TESTID='9' 
select * from test_results where TESTERID='3' and TESTID='10' 
select * from test_results where TESTERID='3' and TESTID='12' 
select * from test_results where TESTERID='3' and TESTID='15' 
select * from test_results where TESTERID='3' and TESTID='4' 

感謝您的任何意見。

+1

您所有TESTID表示, db?所以,只是不包括最後的「和」子句:SELECT * FROM其中TESTERID =「3」 – Don

回答

3

我會假設你正在尋找呢?

SELECT * 
FROM test_results 
WHERE 
    TESTERID = '3' 
    AND TESTID IN ('5', '9', '10', '12', '15', '4') 

如果您使用的是數值型字段的你應該用這個代替BTW:

SELECT * 
FROM test_results 
WHERE 
    TESTERID = 3 
    AND TESTID IN (5, 9, 10, 12, 15, 4) 
4

你可以刪除單引號,如果列的數據類型是數字()否則包裝它,如果沒有。

SELECT * 
FROM test_results 
WHERE testerID = 3 AND 
     testID IN (5,9,10,12,15,4) 
+0

感謝,但你如何添加新testids test_results,因爲他們得到產生的? – user1774442

+0

你是什麼意思*新testids,因爲他們得到* *?你想檢索'testerID = 3'的所有記錄嗎?在你可以直接做到這一點,'SELECT * FROM test_results WHERE testerID = 3' –

-1

謝謝你,我想出瞭如下工作方案:

SELECT * FROM test_results WHERE testerID = 3 AND testID IN (select TESTID from test_results) 
+1

由於很多人已經指出,爲什麼你需要檢查TestID呢?你的where子句的第二部分'AND testID IN(從test_results選擇TESTID)'本質上是說'AND 1 = 1'。它總是會 – Greg

+0

你是絕對正確的格雷格是真實的。有時間休息一下,重新思考問題。謝謝。 – user1774442

0

如果你想從testerid = '3' 獲得的所有記錄

select * from test_results where TESTERID='3'