例如创建一个表
create table stz
(
stuNO int primary key,
subject nvarchar(20) not null,
score int not null
)
insert into stz values(1000,'数学',90)
insert into stz values(1001,'语文',90)
insert into stz values(1002,'英语',90)
insert into stz values(1001,90)
insert into stz values(1000,90)
insert into stz values(1002,90)
-- 现在的情况是
select * from stz;
:学号,subject,score
我们要把它变成: 学号 ,数学,语文,英语
实现如下:
select stuNo,
数学=(select sum(score) from stz where subject='数学' and stuNO=shi.stuNo group by stuNO),
语文=(select sum(score) from stz where subject='语文' and stuNO=shi.stuNO group by stuNo),
英语=(select sum(score) from stz where subject='英语' and stuno=shi.stuNo group by stuNO)
from stz as shi group by stuNo;
---------------------结束
1,突然想到一些问题,如果我们在多表连接查询时为了性能我们先考虑连接查询,子查询,嵌套查询,知道为什么吗?还有在写查询语句是尽量不要在where 后写运算逻辑?
其实这里只有一个共同的原因:嵌套查询,where ,后的条件在你查每条数据时都会运行,很是影响性能。
2, 看下这个查语句,有问题吗?select * from (select * from stz);
应改成select * from (select * from stz ) as shi 必须把那个表集合付给一个变量的。
int i=2000;
object o=i;
i=2001;
int j=(int)o;
console.writeLine("{i},{0},{j}");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。