2011/12/20

MySQL 多個欄位整合為同一欄位

今天 case 遇到一個問題,會員的 table 有三個欄位,分別記錄了寶寶 A、寶寶 B、寶寶 C 的生日年分,後台需要所有的生日年分統合當作下拉選單去篩選,如果只有一個欄位的話還好辦,直接 SELECT 並且 GROUP 就做掉了,但今天有三個欄位要組成一個選項叫要點技巧了,解法如下。

tbl_year
y_id 索引
y_y1 年份 1
y_y2 年份 2
y_y3 年份 3

方法一:建立 tempory table

DROP TABLE IF EXISTS temp_year;
CREATE TEMPORARY TABLE temp_year (
    t_year INT
) ENGINE = MyISAM ;

INSERT INTO temp_year
SELECT y_y1 FROM tbl_year;

INSERT INTO temp_year
SELECT y_y2 FROM tbl_year;

INSERT INTO temp_year
SELECT y_y3 FROM tbl_year;

SELECT * FROM temp_year GROUP BY t_year ORDER BY t_year DESC;

方法二:使用 union 大法

SELECT y_y1 AS theYear FROM tbl_year
UNION
SELECT y_y2 FROM tbl_year
UNION
SELECT y_y3 FROM tbl_year
ORDER BY theYear DESC

這兩種方式會得到相同的結果

沒有留言: