SELECT子句:用来指定查询返回字段,星号(*)表示返回所有字段 SELECT [DISTINCT]*|字段列表 #DISTINCT 用来过滤重复数据 FROM子句:用来指定数据来源的表 FROM <表名> WHERE子句:用来定义查询返回数据的条件 WHERE 查询条件 GROUP BY子句:用来指定查询结果的分组条件 GROUP BY 分组字段 [HAVING 分组条件] ORDER BY子句:用来给指定字段排序,ASC(升序)可省略,DESC(降序) ORDER BY
下面两中方式都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的: 方式一 (select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建. select * into destTbl from srcTbl 方式二 (insert into select from)要求目标表(destTbl)存在,由于目标表已经存在,所以我们除了插入源表(srcTbl)的字段外,还可以插入常量,如例中的:5.特别注意的是:插入的字段顺序要和查询出的字段顺序一致
如何将sql查询出的列名用注释代替? 大家正常的工作的时候,会有这样的要求,客户想要看下原始数据,但是呢.前台导出又麻烦,这时候只能从数据库拷贝出来一份.但是呢,数据库里面的字段客户又看不明白,只能用数据库里面的注释.但是这时候,如果要求很多张表,难道我们要一个个复制吗?这也太tm蠢了. 1 查看我们表 select * from user_col_comments where table_name='TNAME'; 2 写上函数 create or replace function f_col
如何用一个SQL查询出一个班级各个学科第N名是谁? 首先贴出建表语句,方便大家本地测试: -- 建表语句 CREATE TABLE score ( id INT NOT NULL auto_increment, `name` VARCHAR (20) NOT NULL DEFAULT '' COMMENT '姓名', sub VARCHAR (20) NOT NULL DEFAULT '' COMMENT '学科', score INT NOT NULL DEFAULT 0 COMMENT '分
Course表如下: 查询出每门课都大于80 分的学生姓名有两种方法. 1.select distinct name from Course where name not in (select distinct name from Course where score<=80) 2.select name from Course group by name having min(score)>80
今天同事遇到一个很奇怪的问题,恢复了一个数据库,表明明存在,用PLSQL和sqlplus都试过了,SQL语句select * from 表名,查询数据,却提示表名不存在异常 然而,使用select * from 用户名.表名的方式,却可以查询出数据 网上有说是没有权限,但实际上已经有权限了 时间来不及,先想了个大招,使用create table 表名 as select * from 用户名.表名的方式新建了一个表,居然还创建表成功了,暂时解决燃眉之急,至于实际原因,还未找到~
.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select*from people where peopleIdin (select peopleIdfrom peoplegroupby peopleIdhaving ) .删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 deletefrom people where peopleIdin (select peopleIdfrom peoplegroupby pe
1.查询数据表的属性(名称.说明.是否主键.数据类型.是否自增) SELECT t1.name columnName,case when t4.id is null then 'false' else 'true' end as pkColumn, case when COLUMNPROPERTY( t1.id,t1.name,'IsIdentity') = 1 then 'true' else 'false' end as autoAdd ,t5.name jdbcType ,cast(isn
张三 语文 100 张三 数学 83 李四 语文 88 李四 数学 100 查询每个学生的最高成绩. select b.* from (select name,max(score) score from course GROUP BY name) a left join course b on a.`name`=b.`name` and a.score=b.score; 感觉有点不太严谨,但是查询出来的结果是对的. 如果非Mysql上面执行,将字段的引号去掉即可.
查询所给的表中值为空的总数 判断字段是否为空的sql语句 SELECT sex FROM id where sex is not NULL SELECT COUNT(*) t FROM id where sex is NULL UNION ALL SELECT COUNT(*) t FROM id WHERE cardid is NULL SELECT SUM(t) FROM (SELECT COUNT(*) t FROM id where sex is NULL UNION ALL SELE
方法1: 查出科目成绩有小于80分的学生姓名,再约束并去重学生不等于查出来的姓名 select distinct A.name from t_score A where A.name not in(select distinct B.name from t_score B where B.fenshu <=80) 方法2: 按学生姓名分组,且最小的分数要大于80分 select A.name from t_score A group by A.name having min(A.fenshu)>
表名:student 表结构及数据: +----+--------+---------+------+------------+--------------+---------+ | id | name | english | math | birthday | native_place | chinese | +----+--------+---------+------+------------+--------------+---------+ | 1 | 潘怡茹 |