2011-09-17 127 views
0

我有一個包含兩列的MySQL表:a和b。 有20個條目在該表MySQL SELECT查詢問題

對於10個條目中,a = 3。對於其它10個條目中,a = 4。

我想選擇的行,使得B = 0,但我只想要一個從羣裏一= 3,一個從A組= 4

的基本查詢會是這樣的:

SELECT * FROM `table_name` WHERE b = 0 AND rest_of_query 

我應該rest_of_query是什麼?

+0

不要ü希望第一個匹配,或隨機的? – kritya

+0

你能否爲你的例子使用更多的描述性列名?如果你只想要a = 3和a = 4s中的一個,你想用什麼標準來確定要返回哪一個。哪一個重要? – six8

+0

http://stackoverflow.com/questions/2129693/mysql-using-limit-within-group-by-to-get-n-results-per-group似乎涵蓋了同樣的想法 –

回答

0

假設您只需要兩個組中的第一個。 你可以這樣做的:

SELECT * FROM `table_name` WHERE b=0 AND a=3 LIMIT 1 
UNION 
SELECT * FROM `table_name` WHERE b=0 AND a=4 LIMIT 1; 
+0

聯合他們!!!! – Aziz

+0

請參閱我的編輯。那是你想要的嗎? – kritya

+0

雅,但沒有分號....請參閱Ranjan的回答 – Aziz

0

既然你沒有指定的其他列(如果有的話)任何具體的標準,下面的查詢將提供你想要的。所選的特定行可能是非確定性的。

select * from `table_name` where b=0 group by a; 
0

從我的理解你只有2列,並正在定義他們其中一個shoudld是什麼,然後你希望只有另一列的不同條目。

這可以通過GROUP BY來完成作爲

SELECT a, b FROM table_name WHERE b = 0 GROUP BY a; 
0

UNION查詢應該是這樣的

(SELECT * FROM `table_name` WHERE b=0 AND a=3 LIMIT 1) 
UNION 
(SELECT * FROM `table_name` WHERE b=0 AND a=4 LIMIT 1);