2010-11-15 76 views
0

假設這個命令:SELECT sessionID, SessionLength FROM mytable;MySQL的:選擇一個額外的列分類另一列基於IF語句

生成此表:

+-----------+---------------+ 
| sessionID | SessionLength | 
+-----------+---------------+ 
|   1 | 00:20:31  | 
|   2 | 00:19:54  | 
|   3 | 00:04:01  | 

    ... 
|  7979 | 00:00:15  | 
|  7980 | 00:00:00  | 
|  7981 | 00:00:00  | 
+-----------+---------------+ 
7981 rows in set (0.92 sec) 

但我想產生這樣一個表:

+-----------+---------------+--------+ 
| sessionID | SessionLength | Size | 
+-----------+---------------+--------+ 
|   1 | 00:20:31  | BIG | 
|   2 | 00:19:54  | BIG | 
|   3 | 00:04:01  | MEDIUM | 

    ... 
|  7979 | 00:00:15  | SMALL | 
|  7980 | 00:00:00  | SMALL | 
|  7981 | 00:00:00  | SMALL | 
+-----------+---------------+--------+ 
7981 rows in set (0.92 sec) 
  • 東西是big當它是SessionLength > 10
  • 東西是medium時,它的SessionLength <= 10 AND SessionLength >=1
  • 東西是small whne它SessionLength > 1

概念就是我想要做的是這樣的:

SELECT 
    sessionID, 
    SessionLength, 
    (SessionLength > 10 ? "BIG" : (SessionLength < 1 : "SMALL" : "MEDIUM")) 
FROM mytable; 

是否有一個簡單的方法來做到這一點?

回答

1
SELECT 
    sessionID, 
    SessionLength, 
    IF(SessionLength > 10, "BIG", 
     IF(SessionLength < 1, "SMALL", "MEDIUM")) AS Size 
FROM mytable; 

HTH

2

是,

SELECT 
    sessionID, SessionLength, 
    CASE WHEN SessionLength > 10 THEN 'BIG' 
     WHEN SessionLength < 1 THEN 'SMALL' 
     ELSE 'MEDIUM' 
    END 
FROM mytable;