2012-09-28 128 views
2

我有一個table它有2 column,類型和年齡,但我想顯示在5列,因爲它的條件就像這個例子: | TYPE |年齡< 10 | 10 < =年齡< 20 |年齡> 20 |如何從同一列中選擇不同的值?

我該如何做到這一點,因爲它只有2個column

我試過用不同的別名選擇同一個表,但它不是很好,在執行時間很長。

任何幫助將不勝感激。

回答

3

試試這個:

使用CASE聲明

select TYPE, 
     case when Age < 10 then age end as ' Age<10', 
     case when Age between 10 and 20 then age end as ' Age 10-20', 
     case when Age > 20 then age end as ' Age>20' 
from 
your_table 
+0

非常感謝你,你拯救了我的一天。但是當我嘗試時有一個弱點,它會花費很多的記憶。 –

2

你想要的列值是什麼?布爾?

SELECT type, 
    age < 10    AS "Age < 10", 
    age >= 10 AND age < 20 AS "10 <= Age < 20", 
    age > 20    AS "Age > 20" 
FROM table_name; 

好了,顯然你想要的總(各年齡組人數的計數)

SELECT type, 
    (SELECT COUNT(*) FROM table_name AS t2 WHERE age < 10 AND t2.type = type) AS "Age < 10", 
    (SELECT COUNT(*) FROM table_name AS t2 WHERE age >= 10 AND age < 20 AND t2.type = type) AS "10 <= Age < 20)" 
    ...and so on... 
FROM table_name 

我想這是一樣的,你認爲太慢的解決方案?我想不出另一個更好的。年齡的條件索引會有所幫助,但MySQL不支持條件索引。在PostgreSQL中,你可以使用CREATE INDEX ON table_name (age) WHERE age < 10 ...

+0

數量,我想要計數例如有多少類型的年齡<10 –

+0

因此,「多少類型的年齡<10」意味着你想要一個聚合函數,然後......目前的答案都不會工作。 –

+0

有多少?在這種情況下,我只想顯示3種不同的情況。當我嘗試你的答案時說:「命令不同步;你現在不能運行這個命令」 –

相關問題