【发布时间】:2014-02-04 15:19:25
【问题描述】:
我有一张这样的桌子
ID name Start_no End_no
1 a 2 123
2 b 3 65
3 c 191 199
4 d 201 225
5 e 220 223
6 f 221 224
我试过了:
SELECT *
FROM IV_STOCK_DETAILS a
where a.STOCK_START_NO in ( select b.stock_end_no
from IV_STOCK_DETAILS B
where b.stock_start_no between a.stock_start_no
AND A.STOCK_END_NO
AND B.STOCK_END_NO BETWEEN a.stock_start_no
AND A.STOCK_END_NO
AND (a.stock_start_no - A.STOCK_END_NO) !=0
)
ORDER BY cod_stock_branch, stock_start_no;
所以我需要逐一检查所有行及其前一行,以及它的start_no 和end_no 是否位于前一个打印行的start_no 和end_no 内。在这种情况下,答案将是第 2、5、6 行。我只需要查询。
【问题讨论】:
-
顺便说一句,您可能想选择meaningful username。这样做的一个好处是其他人可以使用at-replies,您会收到一条通知,说明有人在评论中向您发送了电子邮件。
-
正确的sample code(此处为 SQL 语句)比任何即席模式和示例数据格式都更有用。请使用
CREATE TABLE和INSERT ... VALUES作为samples。所需的结果不需要以示例代码的形式呈现,因为结果是代码的输出,而不是代码本身。