《MysqL教程MysqL子查询的实例总结》要点:
本文介绍了MysqL教程MysqL子查询的实例总结,希望对您有用。如果有疑问,可以联系我们。
导读:本节内容:MysqL子查询一、有 = <> > < >= <= 的子查询格局:SELECT col1,col2,col3 FROM tbWHERE col = [ANY | SO...
查询
格局:
SELECT col1,col3
FROM tb
WHERE col = [ANY | SOME | ALL](
SELECT coln FROM tb WHERE ...
)
SELECT `ID`,`classname`
FROM `ydfzx_software_class`
WHERE `fatherid` = ANY(
SELECT `id`
FROM `ydfzx_software_class`
WHERE `fatherid`=13
)
查询返回一个离散值(一列一行),假如有ANY或ALL的修饰,可以返回一个离散值列表(一列多行),其实 col = ANY 就相当于col IN.
SELECT col1,col3
FROM tb
WHERE col [NOT] IN(
SELECT coln FROM tb WHERE ...
)
查询中,返回一个离散值列表(一列多行).
查询,注意返回值是0或1
格局:
SELECT ROW(value1,value2,value3 ...) = [ANY | SOME] SELECT col1,col3
查询必需返回一组离散值(多列单行),如果有ANY和SOME谓词的修饰,返回一组离散值列表
SELECT ROW(1,'操作系统',1) = ANY (SELECT `ID`,`caption`,`status` FROM `ydfzx_software_class`)
查询
格局:
SELECT col1,col2 FROM a WHERE EXISTS(SELECT ...)
查询先查询出数据,再逐条通过EXISTS子查询验证,只有子查询返回的记录数不为0时,主查询中的记录有效.
这个查询开销比拟大.
users表
┏━━━┯━━━┯━━━━┓
┃ uid │ name │address ┃
┃ 1 │张荣 │中光 ┃
┃ 2 │晨光 │fuyang ┃
┃ 3 │川湘 │中光 ┃
┃ 4 │张荣 │浙江 ┃
┗━━━┷━━━┷━━━━┛
xl表
┏━━━┯━━━┯━━━━┓
┃ uid │ xl │year ┃
┃ 1 │大专 │2007 ┃
┃ 1 │大本 │2008 ┃
┃ 1 │硕士 │2009 ┃
┃ 2 │小学 │2012 ┃
┃ 2 │初中 │2018 ┃
┃ 2 │高中 │2021 ┃
┃ 2 │大本 │2025 ┃
┃ 4 │大本 │2025 ┃
┃ 5 │大本 │2025 ┃
┃ 3 │大专 │1995 ┃
┃ 3 │大本 │2001 ┃
┗━━━┷━━━┷━━━━┛
SELECT *
FROM `users`
WHERE EXISTS (
SELECT *
FROM `xl`
WHERE `xl`.`uid` = `users`.`uid` AND xl = '小学'
)
SELECT `users`. *
FROM `users`,`xl`
WHERE `xl`.`xl` = '小学' AND `users`.`uid` = `xl`.`uid`
查询
格局: SELECT ... FROM (SELECT ...) AS name WHERE .
首先执行子查询生成临时表,外层查询再到此临时表中获取数据.
例子:
SELECT `users`.`uid`,`users`.`name`,count( `xl`.`uid` ) AS lcount
FROM `users`,`xl`
WHERE `users`.`uid` = `xl`.`uid`
GROUP BY `users`.`uid`
ORDER BY `lcount` DESC
SELECT *
FROM(
SELECT `users`.`uid`,`xl`
WHERE `users`.`uid` = `xl`.`uid`
GROUP BY `users`.`uid`
) AS `temp`
ORDER BY `lcount` DESC
名称,每个子节点的fatherid等于其父节点的ID,如果fatherid为0,表现它为顶层节点,如何能一次就查询出各顶层节点有没有子节点呢,经过调试,以下语句执行成功.
二、一次性查询出某节点的兄弟节点
SELECT *
FROM `tb`
WHERE `fatherid`=(SELECT `fatherid` FROM `tb` WHERE `ID`=6)3、一次性查询出某节点的父辈节点
SELECT *
FROM `tb`
WHERE `fatherid`=(
SELECT `fatherid`
FROM `tb`
WHERE `ID`=(SELECT `fatherid` FROM `tb` WHERE `ID`=13)
)
编程之家PHP培训学院每天发布《MysqL教程MysqL子查询的实例总结》等实战技能,PHP、MysqL、LINUX、APP、JS,CSS全面培养人才。
相关文章
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250