select ID as id, TYPE_CODE as typeCode , TYPE_NAME as typeName ,
PARENT_ID as parentsId , STYLE as style , LEVELS as levels
from type_code
where PARENT_ID = '30119a0e-2f57-473d-9f1d-2843561e9064' and ID not in
( select PARENT_ID from type_code where PARENT_ID);
结果满足查询的条件为空……
后来发现,子查询中存在字段的某些值为null,所以导致了count=0.
所以,将SQL调整为如下:
select ID as id, TYPE_CODE as typeCode , TYPE_NAME as typeName ,
PARENT_ID as parentsId , STYLE as style , LEVELS as levels
from type_code
where PARENT_ID = '30119a0e-2f57-473d-9f1d-2843561e9064' and ID not in
( select PARENT_ID from type_code where PARENT_ID is not null);
这样就能正确的查出结果了!
总结:MySQL中如果要用not in在子查询中限制结果,那必须要将子查询的结果集限制为不含null,不然查询结果count = 0.
Allen
2011-03-29
例2. 查询学生在班的所有班级名字:
select name from classes where id in (select cls_id from students where cls_id is not
null
);
例3. 查找年龄最大,身高最高的学生:
今天领导让我写一个视图,需要把三张没有任何关联关系的表数据整合到一张视图上,我按照最初的方式先把
SQL
整理出来后,结果
mysql
建视图时报错了:下面是最初的方案,CREATE OR REPLACE VIEW view_systeminfo_detailASSELECTf.filesystemSize,f.used,f.unUsed,c.totalContentInfo,s.totalTask,s2...
CREATE or REPLACE VIEW `v_user_adunion_reg` AS
select a.name as user_name,b.* from t_users a,t_adunion_result b where
SQL
: 结构化查询语言,是一门标准通用的语言。标准的
SQL
适合于所有的数据库产品。
SQL
属于高级语言。
SQL
语句在执行的时候,实际上内部也会先进行编译,然后再执行
SQL
。(
SQL
语句的编译由DBMS完成)
-- 查询数据库结构-1科目所有考试结果(学号 科目名 成绩)降序排列
-- 方式一:
使用
联表查询
SELECT StudentNo, r.SubjectName,SubjectResult
FROM result r
INNER JOIN `subject` sub
ON r.SubjectNo=sub.SubjectNo
WHERE subjectName='数据库结构-1'
ORDER BY SubjectResult D
例如,查询t_goods_category数据表
中
的数据,并统计每个商品类别下的商品数量。
mysql
> SELECT category.id, category.t_category,
-> (SELECT COUNT(*)
-> FROM...
文档对象模型(Document Object model,简称DOM)是针对HTML和XML文档的一个API(应用程序编程接口)。
也就是说:DOM是一个接口,一个API,我们可以通过DOM这个接口来对文档进行修改。
DOM会把文档表示为一棵树,这里以(HTML)为例:
HTML代码:
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
报错现象执行
SQL
报错如下:SELECT student.s_no,student.s_name,SUM(result.mark) FROM student,result WHERE student.s_no=result.s_no GROUP BY student.s_no> 1055 - Expression #2 of SELECT list is not in GROUP BY cl...
基本语法: 表达式 [not] in (
子查询
)语法
中
,表达式的最简单形式就是列名或常数
语义:判断某一表达式的值是否在
子查询
的结果
中
。
示例:列出张三,王二同学的所有信息select * from student
where sname in ("张三","王二")上述示例相当于select * from student
where sname = "张三" or sname = "王二"
LEFT JOIN
BD_CONTRACT_BUSINESSMAN B on B.S_CONTRACT_ID =
(select 1 from EF_ARAP where BILL_ID = (select org_id from BD_ORG where org_id=(select or
思路①: 左连接判断右表为
null
SELECT * FROM men m LEFT JOIN person p ON m.name = p.name WHERE p.name IS
NULL
;
思路②: where 条件 刷选出不存在的...
子查询
允许把一个查询嵌套在另一个查询当
中
。
子查询
,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询。
子查询
可以包含普通select可以包括的任何子句,比如:distinct、 group by、order by、limit、join和union等;但是对应的外部查询必须是以下语句之一:select、insert、update、delete、set或 者do。
MySQL
只能通过别名引用所定义的
子查询
的
字段
,
不能
通过别名引用整个
子查询
如下列
SQL
,不行,会报错,t2不存在
select Student.Sname, t2.SId, t2.avgsc
Student,
(select t1.SId SId,avg(t1.score) avgsc from (select SId, score from SC where score < 60) t1 group by t1.SId) t2
where
Student