日期:2014-05-18  浏览次数:20483 次

一个超级无敌简单的SQL问题
select   datetime1,11111111111111111111   from   cn_article  

group   by   datetime1,   content


怎么我这样查,都能查出数据呢?
明明没有1111111111111111111这个列的。
我知道是常量。但是不懂为什么,谢谢

------解决方案--------------------
你写上的当然可以 1111111111111111111
------解决方案--------------------
select datetime1,11111111111111111111 from cn_article
group by datetime1, content
11111111111111111111會被默認為一個沒有列名的新列
等同於
select datetime1,11111111111111111111 as abcd from cn_article
group by datetime1, content
------解决方案--------------------
地板 楼上正解
------解决方案--------------------
这个肯定是正确的, 因为SQL查询分析的时候, 可以有:变量\字面量\列名.

请看以下都是正确的.

select datetime1,11111111111111111111, '1111 ',[123] from cn_article
group by datetime1, content, [123]

特别说明,如果你有 11111 这个列, 那就要加 [11111] 才是正确的列名, 否则会变成字面量.
------解决方案--------------------
3楼的错了, 11111111111 不是一个列名, 而是一个值为数字111111111111的无列名的列.
------解决方案--------------------
select 出来的不仅仅可以是列名, 还可以是 变量\字面量.

你也可以直接 select 'abc ',123

或者

declare @ABC int --定义一个int变量
set @ABC = 1 + 1
select @ABC


------解决方案--------------------
也就是说 select 并不仅仅是用来做表查询的, 可以查询很多其他的东西.

declare @ABC int --定义一个int变量

select @ABC = 10000

以上是赋值操作, 不会输出结果集.