作者rushcat (嗯)
看板Database
標題Re: [SQL ] 欄位比較與取代
時間Wed Feb 17 22:15:49 2010
: table1: table2:
: no data no data
: ------------- -------------
: 1 10 1 25
: 2 20 2 20
: 3 30 4 35
: 4 40
: 5 50
SELECT a.no,
CASE WHEN a.data < ISNULL(b.data, 0) THEN b.data ELSE a.data END
FROM table1 a
LEFT JOIN table2 b ON a.no = b.no
ORDER BY 2, 1
以上寫法前提建立在table1擁有所有no 再用table2去LEFT JOIN補充
ISNULL是SQL Server的Function 我不確定mysql是否也有 判斷是否為NULL
如果有可能出現以下這種狀況
table1 table2
no data no data
1 10 1 20
3 20 2 30
那以上的寫法就會撈不到no=2
建議是先UNION ALL做subquery
SELECT a.no, MAX(a.data)
FROM (
SELECT no, data FROM table1
UNION ALL
SELECT nom data FROM table2
) AS a
GROUP BY a.no
ORDER BY 2, 1
但我不確定mysql是否能這樣寫...XDDDDDD
以上供參考~
--
◢ █◣ ◢◢◣ ◢◣◥████
◢███◣ ◢ ◣ █╴█╴█ ████
███▉█ ◢█◢ ◣◢ ██ ≡███≡ ◥█
███▉█ ◢▉█ ◢██ ███ ◢██ ◢██ ███ ◥█﹋█◤ ◎ █
█▇▇▇◤ █▉█ █▇▇ █▇▏ ▉▇▇ █▉█ ██ ▉▉█▏▏/ ◢█
██▇▏◣ █▇█ ▇▇█ ██▏ ███ █▇█▎██ █▉▉█▏▏█ rushcat
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.99.164
※ 編輯: rushcat 來自: 220.135.99.164 (02/17 22:17)
推 windtassel:後來有想到用CASE。感謝回答,我再試試看~ 02/18 01:12
推 windtassel:後來找到mysql有IFNULL和NULLIF,沒有ISFULL 02/28 22:58