2012-03-09 96 views
-5

这里是我的表中的数据:执行“简单”的SQL查询

id  name  surname  place 
1  test1   isdad  YES 
2  test2  spreda  YES 
3  test3   me  NO 
4  test4  smallvile  YES 

我希望得到什么,所有的ID,其中地方=“YES”。因此,IDS是

1 
2 
4 

,结果数是3。我想追加这个数字的结果结束,所以结果应该是这样的:

1 
2 
4 
3 
+2

所以...究竟是什么尝试过? – 2012-03-09 13:58:24

+0

你的意思是“他们的计数(或总数)是3”?你只是想要最后一行加上前一行的总数? – eouw0o83hf 2012-03-09 13:58:54

+0

你的意思是说你想把count添加为最后的记录吗? – Thea 2012-03-09 13:58:57

回答

2

这里几乎肯定是更好的方法来做到这一点。这就是说,你可以这样做:

SELECT id FROM myTable WHERE place = 'YES' 
UNION ALL 
SELECT COUNT(*) FROM myTable WHERE place = 'YES' 

UNION ALL将追加结果数量作为新行,而不是试图将其添加为另一列。

请不要这样做;结果会是混合的,它坚定地藐视优秀的软件设计,并且会对后来出现的任何人感到困惑,并且必须处理这段代码。

+0

或'SELECT ID,1 as is_id FROM myTable where place ='YES' UNION ALL SELECT COUNT(*),0因为is_id FROM myTable WHERE place ='YES''。我同意它很混乱 – npclaudiu 2012-03-09 14:07:59

+0

那里有什么'1'和'0'值?这只会让结果更加令人困惑和难以理解 – eouw0o83hf 2012-03-09 14:09:03

-1
SELECT id FROM TABLE WHERE place='YES' 

将与你想要的ID返回,和行数将存储计数,如果使用这种用PHP或C++/C#

+1

除了与_php或C++/c#_无关。 – npclaudiu 2012-03-09 14:06:03

1

在MySQL中,你可以做一些类似的使用单个查询WITH ROLLUP

select id, count(*) 
from myTable 
where place='YES' 
group by id 
with rollup