关于这段SQL是如何执行的?谢谢(主要是判断语句)
上次看到别人写得这个,无奈水平低下,看了半天运行了硬是没搞懂她的逻辑.
CREATE TABLE TB(id INT,dt INT)
INSERT TB
SELECT 1,2
UNION SELECT 2,19
UNION SELECT 3,19
UNION SELECT 4,11
UNION SELECT 5,11
UNION SELECT 6,12
--drop table tb
SELECT ID,CNT=ISNULL((SELECT COUNT(A.DT) FROM (SELECT ID=MAX(ID),DT=MAX(DT) FROM TB GROUP BY dt) A WHERE T.ID> A.ID AND T.DT <> A.DT),0)+1
FROM TB T
执行结果是
1 1
2 2
3 2
4 3
5 3
6 4
请问它是如何运行的呢?我尤其没搞懂T.ID> A.ID AND T.DT <> A.DT这个判断如何执行呢? 谢谢!
最好能举例说明
[解决办法]
我觉得关键是要知道每一个select的含义,你把每一个子句都执行一下看看就明白了
以下是表A的结果:
ID DT
12
511
612
319