问题描述
select*from(selectnamefromdbo.tb_adminunionallselect*from(selectidasnamefromdbo.tb_reader)t)a后面加的这个t)a是什么意思?少一个都不行,真是没看懂,求解释
解决方案
解决方案二:
这两个都是一样的select语句需要有个表名,不管这个表名是真实存在的表还是一个查询结果你语句里面的t和a就是起的别名
解决方案三:
楼上已经解释了大概你可以这样理解select*fromaa=selectnamefromdbo.tb_adminunionallselect*fromtt=selectidasnamefromdbo.tb_reader
解决方案四:
t是表的别名,这样写比较简单
解决方案五:
写这个sql,里边两次用了坑爹的东西。首先,写select*from(selectidasnamefromdbo.tb_reader)t这个sql就是瞎掰。直接写里边的一个select语句就够了。其次,最外边的select*from(select一个字段from....)a这个sql语句也是一样地“故弄悬虚”,也是直接写里边的部分就够了。可见,这么一句简单的sql语句,两次故弄玄虚地弄嵌套子查询语法,这个sql语句的作者难道是在开发“代码混淆”工具吗?如果你在你接受实习培训的公司产品中、或者培训班的笔记中看到这样的代码,请提早考虑对方是否有资格对你教学的问题。
解决方案六:
如果这个代码是某个“生成器”产生的,那么你应该看看这个生成器有没有可能有升级版。虽然这个语句不影响sql语句执行效率,但是这种代码也仍然暗示着其僵化、简单粗暴的sql自动翻译质量。要小心使用它。
解决方案七:
引用5楼sp1234的回复:
如果这个代码是某个“生成器”产生的,那么你应该看看这个生成器有没有可能有升级版。虽然这个语句不影响sql语句执行效率,但是这种代码也仍然暗示着其僵化、简单粗暴的sql自动翻译质量。要小心使用它。
既然不影响效率,为什么会评价为“其僵化、简单粗暴”麻烦解释一下,没理解
解决方案八:
selectnamefromdbo.tb_adminunionallselectidasnamefromdbo.tb_reader就好像有人给你指路,让你前进5步,退后3步,左拐再右拐再左拐实际只需要前进2步左拐就到了
解决方案九:
引用6楼xiaobingking的回复:
Quote: 引用5楼sp1234的回复:
如果这个代码是某个“生成器”产生的,那么你应该看看这个生成器有没有可能有升级版。虽然这个语句不影响sql语句执行效率,但是这种代码也仍然暗示着其僵化、简单粗暴的sql自动翻译质量。要小心使用它。既然不影响效率,为什么会评价为“其僵化、简单粗暴”麻烦解释一下,没理解
不影响效率不代表就没有隐患这种僵化的SQL语句生成方式,虽然数据库能认识并很好的优化它,但是你调试的时候就会很麻烦.太多没必要的东西在里面而且不同数据库对于SQL语句的优化性能可能也不太一样SQLSERVER数据库对于SQL语句优化是很好的,而如果你使用一些小数据库,可能就会真的一层一层的去查询