先是子查询 select max([date]) from @tb1 where item=a.item得到 max值 然后select a.* from @tb1 a where
楼上, select max([date]) from @tb1 where item=a.item 里面有item=a.item 这个item=a.item是什么意思?
这个item=a.item是什么意思?item表示@tb1里面的字段,a.item表示@tb1 a里面的字段。这实际上就是一个自联接,你可以吧它理解为两个不同的表。上面的语句可以差分为: select 变量=max([date]) from @tb1,@tb1 a where item=a.item select * from @tb1 where [date] =变量
在 select a.* from @tb1 a 时查出 a.item 同时 a.item作为子查询where的条件 在子查询里优先级最高 作为 select max([date]) from @tb1的条件 最后查询结果和外面的a.[date]字段做匹配
先 select max([date]) from @tb1 where item=a.item再 select a.* from @tb1 a where
先取A 然后选择最大 再select a.*
select max([date]) from @tb1 where item=a.item 这一句有几条数据?
上面写的很明白了 不要以c++的思维去考虑sql sql是结构查询 select max([date]) from @tb1 where item=a.item查出来的东西当然是一条 但item一共有三个 分三次每次一条 最后外面总的记录也是三条
然后select a.* from @tb1 a where
select max([date]) from @tb1 where item=a.item
里面有item=a.item
这个item=a.item是什么意思?
select 变量=max([date]) from @tb1,@tb1 a where item=a.item select * from @tb1 where [date] =变量
select
a.*
from
@tb1 a
时查出 a.item
同时 a.item作为子查询where的条件 在子查询里优先级最高
作为 select max([date]) from @tb1的条件
最后查询结果和外面的a.[date]字段做匹配
然后选择最大
再select a.*
这一句有几条数据?
select max([date]) from @tb1 where item=a.item查出来的东西当然是一条
但item一共有三个 分三次每次一条 最后外面总的记录也是三条