sql多字段查询
A. sql语句如何实现实现查询多列的数据
从你的需求看,是前后矛盾的.
想根据proctID分组 实现查询多列数据,而 实际上,后面的列内容并不相同,因此,肯定会出来多个数据.
如果想 唯一查询一条数据就行,而 多列的不同,谁也无法确定你要那个.
如果是 统计字段的多列数据,是可以的,分组时候,选择统计数据字段即可.
B. sql 查询 一个表中某几列数据
sql查询一个表中某几列数据语法:
1、SELECT 列名称1、列名称2.....列名称n FROM 表名称 WHERE 列 运算符 值;
2、SELECT * from 表名称 where 列 运算符 值(列 运算符 值,这个可以是多个,中间用and隔开)。
解析:使用sql查询时,作为查询的筛选限制条件,只需要对有限制要求的字段使用where进行限制即可,无需对非限制要求的字段进行特别限制。
所以你的语句可以修改为"select * from test1 where id=‘2’;"就可以了。其中,你原语句中的name=全部和age=全部,属于多余的,如果不对name和age字段做任何限制的话,sql本身就是会查询全部name和age,而无需你另外加设条件。
再比如你这样写:“select * from test1;”在不加任何where条件的情况下,这个sql查询本身就是查询全部数据。而当加入id='2'之后,就限制了只能返回id值是2的某一条或者多条数据。
通过几个例子来加深一下对上表各查询条件使用的理解:
1、查询计算机科学系全体学生的名单;
SELECT Sname FROM StudentWHERE Sdept='CS';
2、查询所有年龄在20岁以下的学生姓名及其年龄;
SELECT Sname,Sage FROM StudentWHERE Sage<20;
3、查询考试成绩不合格的学生的学号;
SELECT DISTINCT Sno FROM SCWHERE Grade<60;
4、查询年龄在20~23岁之间的学生的姓名、系别和年龄;
SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23;
5、查询年龄在20~23岁之间的学生的姓名、系别和年龄;
SELECT Sname,Sdept,Sage FROM StudentWHERE Sage NOT BETWEEN 20 AND 23;
6、查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名、系别和年龄。
SELECT Sname,Ssex FROM Student WHERE Sdept IN('CS','MA','IS')。
C. sql如何根据一个字段的多个值查询
具体方法如下:
假定表名test,列id是数值类型。
用同一个字段的多个值作为条件来查询可以使用in或者or。
具体语句如下:
1、select * from test where id in (1,2,3)
2、select * from test where id = 1 or id =2 or id = 3
显然第一种方法更简便。
PS: 如果如你消息所说,有一个选课表test,学生号id,所选课程名name,那么,检索同时选择了美术、体育、音乐三门课程的学生id的语法如下:
select a.id from test a,test b,test c
where a.id = b.id and b.i
d = c.id and a.name = '美术' and b.name = '体育' and c.name = '音乐';
问题的关键,在于test表通过别名做三次关联查询。
D. SQL语句 如何查找一张表里多个字段符合条件的内容
两个方法。这是按照你的题意是这么的,但是应该死查不出来东西的,因为A=a1 和A=a2怎么会同时满足,除非a1=a2,我觉得可能你题目看错了,不是同时满足,而是满足条件1或条件2,这样才会有记录被查出来
1. select * from tab where ((A=a1 and B=b1)and(A=a2 and C=c1));
2.select * from tab where A=a1 and B=b1
intersect select * from tab where A=a2 and C=c1
E. sql语句查询,多字段like模糊查询优化
1、多字段like模糊查询优化:
最常见的写法:
where a like '%xx%' or b like '%xx%' or c like '%xx%';
这种写法查询效率低,经过调查,下面的方法可以替代,并且效率高:
2、如果like的关键字相同:
where instr(nvl(a, '')||nvl(b,'')||nvl(c,''), 'xx') > 0
把要模糊查询的字段先拼接起来,拼接时需要把null转成‘’,否则只要有一个字段值是空,整个拼接的字符串都成空了, 然后用instr 函数去过滤;
3、如果like的关键字不同:
where instr(a, 'xx') > 0 or instr(b, 'yy') > 0 or instr(c, 'zz') > 0
经过测试,这两种方法都比like效率要高;