作者rushcat (嗯)
看板Database
标题Re: [SQL ] select row之间的比较
时间Tue Dec 8 14:27:40 2009
※ 引述《Flyingheart (where are you?)》之铭言:
: 如下是一个范例的资料库
: table 1
: COL1 COL2
: ---------------------
: 1 a1 b1 //row 1
: 2 a2 b2 //row 2
: 3 a3 b3 //row 3
: 4 a4 b4 //row 4
简单来说 就是要让row[i]的COL1去跟row[i]&row[i+1]的COL2去做比较
不过因为row[i]的顺序会随着ORDER BY栏位而有所改变
所以请先给他一个栏位存放row[i]...
另外因为没用过ACCESS 不确定是否支援如此的Subquery
Table
============================
Row_Id Col_1 Col_2
1 5 2
2 3 4
3 4 2
4 2 1
SELECT a.*
FROM Table a
LEFT JOIN (
SELECT x.Row_Id,
MIN(y.Row_Id)
AS NextRow_Id
FROM Table x
LEFT JOIN Table y
ON x.Row_Id < y.Row_Id
GROUP BY x.Row_Id
) b
ON a.Row_Id = b.Row_Id
LEFT JOIN Table c
ON b.NextRow_Id = c.Row_Id
WHERE a.Col_1 > a.Col_2
AND a.Col_1 > c.Col_2
查询结果为
Row_Id Col_1 Col_2
1 5 2
3 4 2
(Row[4]因为无下一栏 所以无从比较 直接被刷掉了...)
如果确定不会跳号的话
SELECT a.*
FROM Table a
LEFT JOIN Table b
ON a.Row_Id + 1 = b.Row_Id
WHERE a.Col_1 > a.Col_2
AND a.Col_1 > b.Col_2
最後希望我没有误会你的意思
(不过其实类似的查询 板上好像有一大堆了...Orz)
--
◢ █◣ ◢◢◣ ◢◣◥████
◢███◣ ◢ ◣ █╴█╴█ ████
███▉█ ◢█◢ ◣◢ ██ ≡███≡ ◥█
███▉█ ◢▉█ ◢██ ███ ◢██ ◢██ ███ ◥█﹋█◤ ◎ █
█▇▇▇◤ █▉█ █▇▇ █▇▏ ▉▇▇ █▉█ ██ ▉▉█▏▏/ ◢█
██▇▏◣ █▇█ ▇▇█ ██▏ ███ █▇█▎██ █▉▉█▏▏█ rushcat
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.251.177.73
※ 编辑: rushcat 来自: 60.251.177.73 (12/08 14:29)
1F:推 Flyingheart:感谢 这个answer比我想像的难好多啊 12/08 15:02
2F:推 Flyingheart:看来我还要多看几本书啊 12/08 15:06
3F:推 PsMonkey:主要是因为这不是 SQL 语言预设要处理的部份吧? 12/08 23:04