A. sql 查询结果为多列,都是代码,想返回各列代码对应的值,怎么做
方法一:
select a.编号,b.重量单位,c.数量单位,d.国家名称,e.类别名称 from a,b,c,d,e
where a.编号 = '002' and a.重量代码=b.重量代码 and a.数量代码=c.数量代码 and a.数量代码=d.数量代码 and a.数量代码=e.数量代码
方法二:select 编号,
(select 重量单位 from b where b.重量代码=abm.重量代码),
(select 数量单位 from c where c.数量代码=abm.数量代码),
(select 国家名称 from d where d.国家代码=abm.国家代码),
(select 类别名称 from e where e.类别代码=abm.类别代码)
from a abm
where abm.编号 = '002'
方法三:编写sql函数,该函数以表a的重量代码,数量代码,国家代码,类别代码字段为参数(只选择一个),求得相应参数对应的b、c、d、e表中的名称。
然后就比较简单了:
select 编号,自定义函数1(重量代码),自定义函数2(数量代码),自定义函数3(国家代码),自定义函数4(类别代码) from a where 编号 = '002'
这样看起来就比较清晰!
B. sql执行的条件一样,只是多了几个查询列,为啥效率就变低了
确实会发生这样的情况,我也有此经历,发生这样的状况是在Oracle数据库下,而查询涉及的一个表的数据量很大,假设为A表,在开始的时候并未带出A的字段,所以查询速度还可以;后来查询带上A表的一个字段,执行很久没有结果。从执行计划中可以看到,增加字段前后查询的执行计划发生变化了,没有带A的字段时,A表有按索引查询,而带A表的字段之后,A表则未按索引查询,而是表扫描,这当然很耗时间了!
经过反复试验都是如此,后来只好改变查询将获取A表的字段放到子查询中执行,才避免了速度变慢。
对应此种情况,我们一般要改变查询语句,或者增加索引,以使查询走索引,这样才不会效率低下。
C. 当使用pl/sql查询数据时,如果查询出来的记录条数过多而pl/sql无法显示完全就出现结果溢出怎么办
分批显示,就是一次查出一部分;
或者把结果到文件来看;
或者限制下查询结果条数
D. sql查询数量过多的时候,结果数量不对了 select count(name) as zjnum from table where name regexp 'xxx
select count(name)//name-->ID
E. sql查询 表中一列不重复 显示多列
CREATE TABLE data (
lx varchar(10),
na varchar(10),
ys varchar(10)
);
INSERT INTO data
SELECT '鞋', '大号', '红' UNION ALL
SELECT '帽子', '大号', '黑' UNION ALL
SELECT '裤子', '大号', '蓝' UNION ALL
SELECT '鞋', '中号', '黑' UNION ALL
SELECT '帽子', '中号', '红';
SELECT
*
FROM
data
WHERE
NOT EXISTS (
SELECT 1
FROM data sub
WHERE data.ys = sub.ys AND data.lx < sub.lx
)
lx na ys
鞋 大号 红
裤子 大号 蓝
鞋 中号 黑
SELECT
*
FROM
data
WHERE
NOT EXISTS (
SELECT 1
FROM data sub
WHERE data.na = sub.na AND data.lx < sub.lx
)
lx na ys
鞋 大号 红
鞋 中号 黑
SQL Server 2008 Express 版本下运行通过.
F. SQL查询时出现了子查询返回多条记录是什么意思啊
SQL查询时出现了子查询返回多条记录意思是符合子查询查询条件的有多条记录。
在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。当获得一个查询的答案需要多个步骤的操作,首先必须创建一个查询来确定用户不知道但包含在数据库中的值,将一个查询块嵌套在另一个查询块的WHERE字句或HAVING短语的条件中查询块称为子查询或内层查询。
子查询的输出可以包括一个单独的值(单行子查询)、几行值(多行子查询)、或者多列数据(多列子查询)。
(6)sql查询结果列过多扩展阅读:
子查询SELECT语句不能包括在ORDER BY子句中。因为ORDER BY字句只能对最终查询结果排序,如果显示的输出需要按照特定顺序显示,那么ORDER BY子句应该作为外部查询的最后一个子句列出。
子查询“必须包括在一组括号中”,以便将它与外部查询分开。如果将子查询放在外部查询的WHERE或HAVING子句中,那么该子查询只能位于比较运算符的“右边”。
G. SQL项目列表中的列数超过655时,结果查看器无法执行查询怎么解决
那就分批来呀,按他们的主键排列,确保查询出来的顺序是一致的,然后查询你需要显示的列名,剩下的放在第二批查,分别把他们复制粘贴出来就好。
H. sql查询结果进行多字段的排序
sql 使用order by 排序
select * from table order by value1,value2 根据字段value1和value2排序,默认是升序 select * from table order by value1,value2 desc 按照降序排序
I. SQL中的Group By的查询过程多列分组的查询过程是怎样的
Group By子句
Group By子句可以将表的行划分为不同的组。分别总结每个组,这样就可以控制想要看见的详细信息的级别。
语法:
[ Group By [ ALL ] Group_By_expression[ ,...n ]
[ WITH { CUBE | ROLLUP } ] ]
参数说明:
ALL:包含所有组和结果集,甚至包含那些任何行都不满足WHERE子句指定的搜索条件的组和结果集。如果指定了ALL,将对组中不满足搜索条件的汇总列返回空值。不能用CUBE或ROLLUP运算符指定ALL。如果访问远程表的查询中有WHERE子句,则不支持Group By ALL操作。
Group_By_expression:对其执行分组的表达式。Group_By_expression也称为分组列。Group_By_expression可以是列或引用列的非聚合表达式。在选择列表内定义的列的别名不能用于指定分组列。对于不包含CUBE或ROLLUP的Group By子句,Group_By_ expression的项数受查询所涉及的Group By列的大小、聚合列和聚合值的限制。该限制从8060字节的限制开始,对保存中间查询结果所需的中间级工作表有8060字节的限制。如果指定了CUBE或ROLLUP,则最多只能有10个分组表达式。
CUBE:指定在结果集内不仅包含由Group By提供的正常行,还包含汇总行。在结果集内返回每个可能的组和子组组合的Group By汇总行。Group By汇总行在结果中显示为NULL,但可用来表示所有值。使用GroupING函数确定结果集内的空值是否是Group By汇总值。结果集内的汇总行数取决于Group By子句内包含的列数。Group By子句中的每个操作数(列)绑定在分组NULL下,并且分组适用于所有其他操作数(列)。由于CUBE返回每个可能的组和子组组合,因此,不论指定分组列所使用的是什么顺序,行数都相同。
ROLLUP:指定在结果集内不仅包含由Group By提供的正常行,还包含汇总行。按层次结构顺序,从组内的最低级别到最高级别汇总组。组的层次结构取决于指定分组列时所使用的顺序。更改分组列的顺序会影响在结果集内生成的行数。
使用Group By子句的注意事项。
(1)在SELECT子句的字段列表中,除了聚集函数外,其他所出现的字段一定要在Group By子句中有定义才行。例如“Group By A,B”,那么“SELECT SUM(A),C”就有问题,因为C不在Group By中,但是SUM(A)是可以的。
(2)SELECT子句的字段列表中不一定要有聚集函数,但至少要用到Group By子句列表中的一个项目。例如“Group By A,B,C”,则“SELECT A”是可以的。
(3)在SQL Server中text、ntext和image数据类型的字段不能作为Group By子句的分组依据。
(4)Group By子句不能使用字段别名。
1.按单列进行分组
Group By子句可以基于指定某一列的值将数据集合划分为多个分组,同一组内所有记录在分组属性上具有相同值。
示例:
把“student”表按照“性别”这个单列进行分组。在查询分析器中输入的SQL语句如下:
use student
select 性别
from student
Group By 性别
但仍然要强调SELECT子句必须与Group By后的子句或者是分组函数列相一致。
例如,由于下列查询中“姓名”列既不包含在Group By子句中,也不包含在分组函数中,所以是错误的。错误的SQL语句如下:
use student select 姓名,性别 from student Group By 性别
例如,在“grade”表中,按“学期”分组查询。SQL语句如下:
use studnet select 学期 from grade Group By 学期
2.按多列进行分组
Group By子句可以基于指定多列的值将数据集合划分为多个分组。
示例:
在“student”表中,按照“性别”和“年龄”列进行分组。在查询分析中输入的SQL语句如下:
use student
select 性别,年龄
from student
Group By 性别,年龄
在“student”表中,首先按照“性别”分组,然后再按照“年龄”分组。
再举一个例子,例如,在“grade”表中,按照“学号”和“课程代号”列进行分组。SQL语句如下:
use student
select 学号,课程代号 from grade Group By 学号,课程代号
按多列进行分组时有NULL组的是如何处理的。当表按多列进行分组时有NULL组,这时NULL被作为一个特定值处理,就像其他任何值一样。也就是说,如果在某个分组列中存在两个NULL,则按它们有相同的值那样处理,并将它们放在相同的组中。
示例:
在“grade”表中,按“学期”和“课程代号”列进行分组。在查询分析器中输入的SQL语句如下:
use student
select 学期,课程代号
from grade
Group By 学期,课程代号
3.与聚集函数一起使用
Group By子句是经常与聚集函数一起使用。如果SELECT子句中包含聚集函数,则计算每组的汇总值,当用户指定Group By时,选择列表中任一非聚集表达式内的所有列都应包含在Group By列表中,或者Group By表达式必须与选择列表表达式完全匹配。
示例:
在“student”表中,分别求男女生的平均年龄。在查询分析器中输入的SQL语句如下:
use student
select 性别,avg(年龄) as 平均年龄
from student
Group By 性别
例如,在“student”表中,分别求有多少个男生和女生。SQL语句如下:
use student
select 性别,count(性别) as 人数 from student Group By 性别
说明:关于聚合函数的详细讲解可参阅9.2.1节。
4.与HAVING子句一起使用
HAVING子句对Group By子句选择出来的结果进行再次筛选,最后输出符合HAVING子句中条件的记录。HAVING子句的语法与WHERE子句的语法相类似,惟一不同的是HAVING子句中可以包含聚合函数。
语法:
[HAVING <search_condition>]
参数说明:
<search_condition>:指定组或聚合应满足的搜索条件。当HAVING与Group By ALL一起使用时,HAVING 子句替代ALL。
示例:
在“student”表中,按“性别”分组求平均年龄,并且查询其平均年龄大于21的学生信息。在查询分析器中输入的SQL语句如下:
use student
select avg(年龄), 性别
from student
Group By 性别
having avg(年龄)>21
在“grade”表中,按“学期”分组求平均成绩,并且查询“平均成绩”大于93的课程信息。在查询分析器中输入的SQL语句如下:
+1 已赞过
J. SQL查询结果列过多换行
楼主你的这个问题描述不清晰,首先我从你的希望显示分析了一下 你的列6-10 都显示到第二行去了,依据你的显示结构 列6-10等于变为了列1-5 如果是修改还行 要换的话SQL中实现不了