‘壹’ 如何只用sql语句查询一个类别下面所有子类包含的信息
Sql Server 2000因为你这里说了只有三级分类,所以我就不写Sql函数了,得到华北下面所有子类别的ClassID(不包括华北的ClassID)select ClassID from Newclass where classParentID in (select ClassID from Newclass where classParentID=51)
根据类别ClassID表查询新闻select * from News where ClassID in (select ClassID from Newclass where classParentID in (select ClassID from Newclass where classParentID=51))
ok了
‘贰’ sql如何查询一个类别下面所有子类包含的信息
我理解的你的问题,是只是通过sql来实现 查询?还是使用开发语言来实现。如果通过sql来查询,我想ClassID一定另一张表的主键,您就可以通过这个主键去别的表中查询出你需要的信息。
‘叁’ 写一条高效的sql查询,该怎么处理
优化SQL查询:如何写出高性能SQL语句
1、首先要搞明白什么叫执行计划?
执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生欀如一条SQL语句如果用来从一个10万条记录的表中查1条记录,那查询优化器会选择“索引查找”方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用 “全表扫描”方式。
可见,执行计划并不是固定的,它是“个性化的”。产生一个正确的“执行计划”有两点很重要:
(1) SQL语句是否清晰地告诉查询优化器它想干什么?
(2) 查询优化器得到的数据库统计信息是否是最新的、正确的?
2、统一SQL语句的写法
对于以下两句SQL语句,程序员认为是相同的,数据库查询优化器认为是不同的。
select * from al
select * From al
其实就是大小写不同,查询分析器就认为是两句不同的SQL语句,必须进行两次解析。生成2个执行计划。
所以作为程序员,应该保证相同的查询语句在任何地方都一致,多一个空格都不行!
3、不要把SQL语句写得太复杂
我经常看到,从数据库中捕捉到的一条SQL语句打印出来有2张A4纸这么长。一般来说这么复杂的语句通常都是有问题的。我拿着这2页长的SQL语句去请教原作者,结果他说时间太长,他一时也看不懂了。可想而知,连原作者都有可能看糊涂的SQL语句,数据库也一样会看糊涂。
一般,将一个Select语句的结果作为子集,然后从该子集中再进行查询,这种一层嵌套语句还是比较常见的,但是根据经验,超过3层嵌套,查询优化器就很容易给出错误的执行计划。因为它被绕晕了。像这种类似人工智能的东西,终究比人的分辨力要差些,如果人都看晕了,我可以保证数据库也会晕的。
另外,执行计划是可以被重用的,越简单的SQL语句被重用的可能性越高。而复杂的SQL语句只要有一个字符发生变化就必须重新解析,然后再把这一大堆垃圾塞在内存里。可想而知,数据库的效率会何等低下。
4、使用“临时表”暂存中间结果
简化SQL语句的重要方法就是采用临时表暂存中间结果,但是,临时表的好处远远不止这些,将临时结果暂存在临时表,后面的查询就在tempdb中了,这可以避免程序中多次扫描主表,也大大减少了程序执行中“共享锁”阻塞“更新锁”,减少了阻塞,提高了并发性能。
5、 OLTP系统SQL语句必须采用绑定变量
select * from orderheader where changetime > ’2010-10-20 00:00:01′
select * from orderheader where changetime > ’2010-09-22 00:00:01′
以上两句语句,查询优化器认为是不同的SQL语句,需要解析两次。
如果采用绑定变量
select * from orderheader where changetime > @chgtime
@chgtime变量可以传入任何值,这样大量的类似查询可以重用该执行计划了,这可以大大降低数据库解析SQL语句的负担。一次解析,多次重用,是提高数据库效率的原则。
6、绑定变量窥测
‘肆’ 如何SQL查询字段值包含于字符串
1、我们新建查询后,写上Select关键字。
‘伍’ sql 计算包含的子集
第一步: 判断A是否包含其他组(B, C, D...)
select o.X, min(case when a.Y is null then 0 else 1 end ) as included -- 包含则为1,不包含则为0
from (select X,Y from t where X <> 'A') as o -- 其它组
left join
(select Y from t where X = 'A') as a -- A组
on o.Y = a.Y
group by o.X
第二步:让每一组都与其它组比较,并统计包含了多少组。完整的语句如下:
select distinct X,
(select sum(included) from
(select o.X, min(case when a.Y is null then 0 else 1 end ) as included from
(select X, Y from t where X <> t1.X) as o left join
(select Y from t where X = t1.X) as a on o.Y = a.Y
group by o.X
) as b
) as included
from t as t1
‘陆’ sql语句,怎么判断谁是谁的子集
1. 不是很好理解,不过参考下面应该会做啦.
2. select pno from p where pno in ( select pno from spj where sno=`s1`);
‘柒’ sql 怎么根据父id查询下三级子集
一级子集:select * from table where parentId=5
二级子集:select * from table where parentId in(select id from table where parentId=5)
三级子集:select * from table where parentId in(select id from table where parentId in(select id from table where parentId=5))
‘捌’ 关于SQL查询的问题,我有两个表A,B,B是A的子集,都含有字段user,pp,怎么求出其补集
SELECT*
FROM(SELECTuser,pp
FROMA
MINUS
SELECTuser,pp
FROMB)new_table
‘玖’ mysql like(子集查询),我需要知道是如何对子结果集进行like查询(mysql)
目前我了解到的Like用法是 多个要用or连接的
where colname like ''%abc%' or type like '%cba%'
如果多个这样写觉得麻烦的话,可以试着写个存储过程 循环查一下
‘拾’ sql语句包含怎么写
sql语句包含可写成:select * from table1 where field1 like ’%value1%’(所有包含‘value1’这个模式的字符串)。
sql语句用于数据库查询和程序设计,比如查询表中某字段值“包含”某字符串的所有记录的方法如下:
如果表中有一个name字段,查询name包含“张三”的所有记录,就可以这样写:Stirng strsql="SELECT * FROM 表名 WHERE name LIKE ’%"+"张三"+"%’"。
(10)sql查询子集扩展阅读
sql语句包含的关联词
据了解,sql语句查询某字段值“包含于”某个字符串的所有记录的方法如下:
如果查询表中name字段包含于字符串“张三是个好学生”的所有记录,就可以这样写:String strsql="SELECT * FROM 表名 WHERE INSTR(’张三是个好学生’,name)>0"(记录中的name字段值中包括张、三、是、个、好、学、生、张三等所有记录)。