关于sql server查询的where不识别列名的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于sql server查询的where不识别列名的问题相关的知识,希望对你有一定的参考价值。

我写了如下查询语句:
SELECT [Code],COUNT( [Code]) as 'sl'
FROM [AB].[dbo].[QXZL]
where sl < 1000
group by code
当where中引用了我自定义的列名sl后就会出错,如果是where code = 'AA'就能通过查询,请问我如何才能筛选出数量小于1000的行?

因为sql是在where后order by前加别名,即生成结果集后加别名,where是在生成结果集前的操作,order by是生成结果集后的操作,因为where要生成结果集,而order by是对结果集的操作。如果非要用别名,那么只能用派生表,即先生成别名再where
select * from
(
select 字段1 as A,字段2 as B.... from tablename
) aaa
where A=1
order by A
参考技术A 二楼的做法是对的,或者外层嵌套一层
select * from(
SELECT [Code],COUNT( [Code]) as 'sl'
FROM [AB].[dbo].[QXZL]
where sl < 1000
group by code ) t where t.sl<1000
参考技术B SELECT [Code],COUNT( [Code]) as 'sl'
FROM [AB].[dbo].[QXZL]
where sl < 1000
group by code
having COUNT( [Code]) <1000
参考技术C 你这语句有问题吧你这个count(【code】)表达式有问题

2017-3-10 SQL server T-sql语句 高级查询

条件修改:
update 表名 set 列名 = 值 where 列名 = 值
条件删除:
delete from 表名 where 列名 = 值
高级查询
条件查询
 查列 *改为要查看的列,多列逗号隔开
 筛选条件 where 列名 = >= <= > < 值 and or
模糊查询
select * from 表名 where 列名 like ‘%值%‘ %通配符
排序查询
select * from 表名 where order by 列名 asc / desc
去重查询
select distinct 列名 from 表名
分组查询
select 某一列名 from 表名 group by 对应的列名
子查询
将查询语句当做值来使用

 

alter table 外键表名 add constraint 约束名称 foreign key(外键字段) references 主键表名(约束列名)

 

如表A中的Ids是主键,要约束表B中的Aid列,那么语句应该是:

alter table B add constraint A_B_Ids foreign key(Aid) references A(Ids)


















以上是关于关于sql server查询的where不识别列名的问题的主要内容,如果未能解决你的问题,请参考以下文章

2017-3-10 SQL server T-sql语句 高级查询

SQL Server增删改查语句

sql server 查询约束键在哪个表的脚本

SQL Server,临时表,SELECT 语句不起作用

WHERE 语句中的 SQL Server AS 语句别名列

2017-3-13 SQL server 表连接