A. 如何让字段名命名为系统函数同名的名称。比如说设置某字段名为Type或者Count。拜托各位了 3Q
MS sql数据库中,可以使用 [] 括起和关键字同名的字段名;MYSQL中则使用 `` 括起和关键字同名的字段名称。 如: MS SQL ==> [type] [user] MYSQL ==> `time`
B. SQL查询时字段名称和函数名称相同,怎么查字段
SQL存储过程 参数为字段名和值的函数怎么写 if (@BasicUnit_1 != 0) and (@BasicUnit_1 != null) begin update ProctPrice set BasicUnit_1 = cast(FactoryPrice * @BasicUnit_1 as decimal(18,2)) where ProctID in (select ProctID from V_Procts where @strWhere) end if (@BasicUnit_2 != 0) and (@BasicUnit_2 != null) begin update ProctPrice set BasicUnit_2 = cast(FactoryPrice * @BasicUnit_2 as decimal(18,2)) where ProctID in (select ProctID from V_Procts where @strWhere) end
C. 如何避免SQL查询出的重名字段被覆盖
使用表别名进行表的区分,在select要的结果后面加 as XXX 进行重命名。
D. SQL Server的字段名与关键字同名如何解决
在使用的时候,使用中括号扩起来,试一试
select*from[from]---使用from作为表名
E. sql语句中怎样查询学生表中所有有着相同的名字的人的信息
方法一:select *from 学生表
where name in 姓名
方法二:
selecct 姓名
from 学生表
group by 姓名
having count(*)>1
如果 having 子句不加,则是统计各名字的数量,加上则只显示 数量大于 1 的人名。
(5)sql字段名与函数重名扩展阅读:
sql 学生表中如何查询与某同学同年的人
SELECT*FROM学生表T1
WHERE EXISTS(SELECT1
FROM学生表T2
WHEREYEAR(T1.生日) = YEAR(T2.生日)
AND 学生编号 = '某同学学生编号')
YEAR是取datetime类型数据的年部分的函数,只要表中的数据存在年份和某学生生日的年份相同就可以。
F. 两个sql数据表,字段名不一样,但字段个数一样,数据也一样
用charindex函数:
a1="1"
sql="select
*
from
数据表
where
'"&a1&"'
in(字段名)"
成
a1="1"
select
*
from
数据表
where
字段名
in
(
select
字段名
from
数据表
where
charindex(a1,字段名)>0
)
in语句的用法楼主需要熟悉一下,否则你不能熟练正确地运用in语句
G. sql查询两个字段相同的记录
EXCEL中用VBA连接ACCESS数据库
有如下一张表,要分别查找出所有同名的人、所有同名并且学号也一样的人以及所有同名但不同学号的人。
查询所有同名人员
select * from [18年考试成绩] where [姓名] in (SELECT [姓名] FROM [18年考试成绩] group by [姓名] having count(姓名)>1)
查询结果:
查找所有姓名和学号两个字段都重复的人
select * from [18年考试成绩] where [姓名] in (SELECT [姓名] FROM [18年考试成绩] group by [姓名] having count(姓名)>1) and [学号] in (SELECT [学号] FROM [18年考试成绩] group by [学号] having count(学号)>1)
查询结果:
查找所有姓名重复但学号不重复的人
select * from [18年考试成绩] where [姓名] in (SELECT [姓名] FROM [18年考试成绩] group by [姓名] having count(姓名)>1) and [学号] not in (SELECT [学号] FROM [18年考试成绩] group by [学号] having count(学号)>1)
注意:要把SELECT查询子句配合in或not in 操作符使用,SELECT查询子句只能有一列内容。
查询结果:
其中子句 “SELECT [姓名] FROM [18年考试成绩] group by [姓名] having count(姓名)>1”是显示所有重复的姓名,如果如下:
如果要知道重复出现次数,则可以这样写:
SELECT [姓名],count(姓名) as 出现次数 FROM [18年考试成绩] group by [姓名] having count(姓名)>1
结果如下:
查找唯一记录
group by [姓名],意思是按姓名分组,having count(姓名)>1 是分组条件,意思是姓名次数出现2次以上的重复内容以姓名进行分组,前面的count(姓名)是对分组以后的姓名统计出现次数。在后面要使用函数条件时应该使用having,而不是使用where
查找唯一值,比如本例的班级中,只有一个“四班”,要把这个四班的所有字段显示出来可以这样:
select * from [18年考试成绩] where 班级 not in (SELECT 班级 FROM [18年考试成绩] group by 班级 having count(班级)>1)
结果:
如果使用“SELECT DISTINCT 班级 FROM [18年考试成绩]”语句查询唯一值,结果将会如下:
DISTINCT 会显示不重复的值,如果有重复的,只显示第一个,所以如果需要显示仅出现一次的值并不适合使用SELECT DISTINCT语句
分组查询语句:
比如要班级为单位,查询每个班的总人数,科目总分,科目平均分等
SELECT [班级],count(姓名) as 班级人数,sum(语文) as 语文总成绩,sum(数学) as 数学总成绩,ROUND(avg(语文),1) as 语文平均分,ROUND(avg(数学),1) as 数学平均分 FROM [18年考试成绩] group by [班级]
查询结果如下:
注意:如果使用函数的字段,不使用AS指定别名,将会自动生成一个字段名,第一列名字Expr1000,第二列名为Expr1001,第三列名为Expr1002,以此类推
如:
SELECT [班级],count(姓名),sum(语文),sum(数学),ROUND(avg(语文),1) ,ROUND(avg(数学),1) FROM [18年考试成绩] group by [班级]
查询结果如下:
如果不指定别名,你将无法清楚在查询结果中知道每一列是干什么的。
如果需要再细分,查询每个班女生总人数和科目平均分,只需要再加一个where条件就可以了
SELECT [班级],count(姓名) as 班级女性人数,ROUND(avg(语文),1) as 语文平均分,ROUND(avg(数学),1) as 数学平均分 FROM [18年考试成绩] where 性别='女' group by [班级]
H. sql server2008中属性名与内置函数名能一样吗
可以,但需要用中括号[colname]
I. SQL SERVER修改函数名容易引发的问题有哪些
通过SSMS改了原函数名,而SQL SERVER不会因为改名去更新sys.all_sql_moles视图的definition字段的!于是就造成了已经编译好的函数与sys.all_sql_moles系统视图的函数定义出现了不一致的情况。
结论:
(1)尽量不要修改对象名,确实要修改的话,就重建吧。如果是表并且包含的大量数据要重建的话,就比较麻烦了,即使是修改表名不会出现像函数、存储过程的问题,但修改表名涉及应用程序等问题。
(2)尽量使用SSMS的右键菜单修改或生成对象的定义。但如果函数或存储过程太多,会觉得sp_helptext和sys.all_sql_moles会更方便些,查询出来的结果要认真核对下对象名是否一致即可。这里提一下,sp_helptext有些限制,可以参考SQL中print、sp_helptext的限制与扩展。
J. sql语句有两个字段id,name(name重复字段),kd金额,计算名字相同的,金额相加
select name,sum(kd金额) from TABLENAME group by name;