想问一下sql优化34条中这条语句怎么解析的,
答案:2 悬赏:0 手机版
解决时间 2021-01-17 17:38
- 提问者网友:半生酒醒
- 2021-01-17 07:05
想问一下sql优化34条中这条语句怎么解析的,
最佳答案
- 五星知识达人网友:不想翻身的咸鱼
- 2021-01-17 08:05
第一句你举例那个是一个去重的语句,就是EMP_NO相同的只保留一条
你自己写的那条,我来给你说一下
select max(bidcount) from aution_recording group by objectID
看下这个结果,虽然你的查询里没有group by ,但是你后边的where条件注定会比较所有的objectID
上边的结果就是
7 --这个对应objectID =1的
6 --这个对应objectID =2的
然后括号外边
就是靠objectID 相同的,去和里边的比较,如果相等就输出整条记录
欢迎追问追问我理解是这样的,= 这个后面跟的应该是单一个值或者是一列,视乎这句
= select max(bidcount) from aution_recording e where x.objectID = e.objectID
查询出来的不是单一个值,那应该一列数据,如果能够做到查询出
select max(bidcount) from aution_recording group by objectID这样的查询也就只是出现了这样结果
Query OK, -1 rows affected追答我给你写一个你这句的完全体,我想你应该能看懂
select * from aution_recording x ,
(select objectID,max(bidcount) bidcount from aution_recording group by objectID) y
where x.objectID=y.objectID and x.bidcount=y.bidcount追问这句当然能懂,我本来想也是
= (select max(bidcount) from aution_recording e where x.objectID = e.objectID)
这个子查询假如能够得到相应的max(bidcount)还有一个objectID的引用就可以了,但是=后面跟的那句子查询得到的值我不太清楚追答得到的就是
7 --这个对应objectID =1的
6 --这个对应objectID =2的
啊
靠后边的where x.objectID = e.objectID关联了,就能关联到外层的objectID了啊追问那么我只要前面这句
select * from aution_recording x where x.bidCount =
后面这句可以有另外的写法不?
(select max(bidcount) from aution_recording e where x.objectID = e.objectID);追答恐怕你得把=号放到你那句之外
select * from aution_recording x where x.bidCount =
你这句后边用等号了
应该只能用这个写法了
你要把
x.bidCount =
去掉,可能写法很多追问假如 = 后面
select max(bidcount) from aution_recording e where x.objectID = e.objectID
得出的结果是7和6
也就是会进行这两个查询
select * from aution_recording x where x.bidCount =7
select * from aution_recording x where x.bidCount =6
但是这样不是我想要的结果,怎么知道另外的objectID追答我私信你,给你留Q,这么问下去,你财富都要没了
你自己写的那条,我来给你说一下
select max(bidcount) from aution_recording group by objectID
看下这个结果,虽然你的查询里没有group by ,但是你后边的where条件注定会比较所有的objectID
上边的结果就是
7 --这个对应objectID =1的
6 --这个对应objectID =2的
然后括号外边
就是靠objectID 相同的,去和里边的比较,如果相等就输出整条记录
欢迎追问追问我理解是这样的,= 这个后面跟的应该是单一个值或者是一列,视乎这句
= select max(bidcount) from aution_recording e where x.objectID = e.objectID
查询出来的不是单一个值,那应该一列数据,如果能够做到查询出
select max(bidcount) from aution_recording group by objectID这样的查询也就只是出现了这样结果
Query OK, -1 rows affected追答我给你写一个你这句的完全体,我想你应该能看懂
select * from aution_recording x ,
(select objectID,max(bidcount) bidcount from aution_recording group by objectID) y
where x.objectID=y.objectID and x.bidcount=y.bidcount追问这句当然能懂,我本来想也是
= (select max(bidcount) from aution_recording e where x.objectID = e.objectID)
这个子查询假如能够得到相应的max(bidcount)还有一个objectID的引用就可以了,但是=后面跟的那句子查询得到的值我不太清楚追答得到的就是
7 --这个对应objectID =1的
6 --这个对应objectID =2的
啊
靠后边的where x.objectID = e.objectID关联了,就能关联到外层的objectID了啊追问那么我只要前面这句
select * from aution_recording x where x.bidCount =
后面这句可以有另外的写法不?
(select max(bidcount) from aution_recording e where x.objectID = e.objectID);追答恐怕你得把=号放到你那句之外
select * from aution_recording x where x.bidCount =
你这句后边用等号了
应该只能用这个写法了
你要把
x.bidCount =
去掉,可能写法很多追问假如 = 后面
select max(bidcount) from aution_recording e where x.objectID = e.objectID
得出的结果是7和6
也就是会进行这两个查询
select * from aution_recording x where x.bidCount =7
select * from aution_recording x where x.bidCount =6
但是这样不是我想要的结果,怎么知道另外的objectID追答我私信你,给你留Q,这么问下去,你财富都要没了
全部回答
- 1楼网友:零点过十分
- 2021-01-17 08:28
主有和子查询中的表都是同一表。
随着数据插入,伪列也是递增的,min就是查出来同一表中最先写入的数据。将其删除。
随着数据插入,伪列也是递增的,min就是查出来同一表中最先写入的数据。将其删除。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯