作者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)
1F:推 windtassel:後来有想到用CASE。感谢回答,我再试试看~ 02/18 01:12
2F:推 windtassel:後来找到mysql有IFNULL和NULLIF,没有ISFULL 02/28 22:58