2012-03-09 97 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