2 qq 30244387 qq_30244387 于 2016.04.28 17:00 提问

sql查询时select id,*无法查询

select id,* from table;-- 这句sql是错误的;
select id,a.* from table a ;--这句就可以执行;
为啥给表设置了别名之后就可以了?

8个回答

renwuqiangg
renwuqiangg   2016.04.28 17:05

或许这就是思想,先记住,慢慢就理解了。

tiger_nana
tiger_nana   2016.04.28 17:28

代表的是全部,id+等于重复了,而起别名就可以避免这个计算机认为重复的情况

qq_17163785
qq_17163785   2016.04.28 17:35

代表全部字段,id字段也被包含在

qq_32224861
qq_32224861   2016.04.28 17:37

我觉得是这样的,第一个错误本身语法就是有问题,星号里面就包含id了,肯定不对;第二个对的原因是因为sql的别名机制可能是又新建(模拟)了另一个表,只不过数据都是一样的,所以差两个表就是没有问题的,个人理解,仅供参考

donggua3694857
donggua3694857   Rxr 2016.04.28 17:47

加了别名会被认为是两个id,虽然他们都指的同一个,不加的话星号已经包含全部了

baidu_32688757
baidu_32688757   2016.04.28 20:18

先说第一个:select * from table
当select后面只有*时,其代表后面表的所有字段;
但若是有其它字段,*代表就没有意义了。

第二个:select ID,a.* from table a;
并不说要给表命一个临时表名才能使用a.*
select ID,table.* from table ;也是可以的
他代表了table表的所有字段。

u012721519
u012721519   2016.04.29 00:08

第一个*与ID冲突,所以不行。
第二个给表取了个别名,相当于另建了个一模一样的表,冲突不存在。

CSDNXIAOD
CSDNXIAOD   2016.05.03 01:50

SQL (select查询)
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
让select查询结果额外增加自增的伪序号列
<br />在基于数据库的系统的开发过程中,有时需要让select返回的查询结果中存在一列实际的数据库表中并不存在的序号列,即在查询结果中额外增加自增的伪序号列。从网络上可以找到一些解决方案,但总结起来主要有三种:<br />1.使用数据库自带的序号函数实现<br />Oracle提供的ROWNUM,SQL Server 2005提供的RANK,ROW_NUMBER都可以比较简单地实现这种需求,不过这种方法对我并不适用,因为我用的是SQL SERVER 2000。<br /><br />2.使用临时表实现<
Select 查询 自增序列生成
ms Sqlserver:使用默认函数ROW_NUMBER()SELECT ROW_NUMBER()OVER (ORDER BY SID DESC) AS ROW, location FROM table where Kind >=4mySql :没有函数,只能使用变量set @n = 0; select (@n := @n + 1) as id , location from table w
sql获取自动生成的ID编号
insert into 后获得自动插入的id(select @@identity)当运行完插入语句后,执行select @@identity就可得到自动生成的id如果是sql server 最好用select SCOPE_IDENTITY() as id因为@@identity全局的同类还有IDENT_CURRENT(‘table’)IDENT_CURRENT 返回为任何会话和任何作用域中的特定
sql查询不包含的列
declare @sql varchar(1000) select @sql='select ' select @sql=@sql+name+',' from syscolumns where id=object_id(N'表a') and name not in ('time') select @sql=left(@sql,len(@sql)-1) select @sql=@sql+'
[疯狂Java]SQL-select:查询列改名、查询常量、去重、升/降序排列
1. 选出列的命名问题:     1) 选出列也称为查询列,比如select name, id from table1;里name和id就是选出列,也成为查询列,即查询得到的列;     2) 关于选出列的要素:         i. 选出列一定是目标表中的列,即上面的name和id必定是table1中的列;         ii. 得到的查询结果中显示的列名就是查询列的列名(name,
Sql查询结果字符串累加(转)
if object_id('[tb]') is not null drop table [tb] go create table [tb]([Fld1] varchar(1),[Fld2] varchar(4)) insert [tb] select 'A','STR1' union all select 'A','STR2' union all select 'A','STR3' union
在SQL查询结果中添加自增列的两种方法
解决办法《一》: 如果想查询出这个表的信息,并添加一列连续自增的ID,可用如下查询语句: SELECT Row_Number() over ( order by getdate() ) as init , * FROM 表名   解决办法《二》: 使用关键字IDENTITY创建临时表 SELECT IDENTITY(int,1,1) as Nid,* INTO #T FROM 表名
SQL复合查询“列名无效”与“ID不明确”解决方法
             SQL 复合查询问题:在班级课程表中进行sql复合查询时,sql语句可以在SQL Server查询分析器中执行成功,但是在Visual studio 2005中出现问题解决:在SQL Server中进行复合查询,会默认有一个主表,当我们使用隐藏字段时,查询的时候其实会把默认的主表加在隐藏字段之前的SELECT classcourse.[ID], cla
tp3.2 select查询 踩坑
本以为用过tp3.2框架写过几个项目,自认为对于tp3.2的查询方式已经是比较熟悉和了解,但是在某次做项目中一个查询出了错,找了好久才找到了问题。先来看看问题 $value="test"; //查询1 $result=M('test')->where("value='$value'")->find(); if($result) {
Sqlite 查询新增行的自增id (类似mssql的@@Identity)
insert into usersdatabase(userid,dbName) values (1,'ggg'); select last_insert_rowid();