2011-09-17 104 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);