返回介绍

subquery

发布于 2024-06-15 14:30:40 字数 5526 浏览 0 评论 0 收藏 0

嵌套子查询

  1. where in 中嵌套 select 语句子句。
  2. 作为计算字段,放在 select 的查询字段中。(效率较低,每进行一次查询都进行一次子查询) 3.

子连接、 自连接(需要给表命别名)

连接通常要比子查询性能要好。

自然连接时对于列来说的,即查出的连接表的所有列不重复。对于不同的表,连接肯定是自然连接。对于自连接表,需要指明要查出的列排除重复列,才能构成自然连接。

jion 连接表

where 连接 select ..., from a, b where a.id = b.forgin_id;

where 这里作为连接条件而不是筛选条件,没有连接条件的 where 将返回两个表的笛卡尔积。

另一种表示方法是,join

select ..., from a inner join b on a.id = b.id;

join 能指定更多的连接类型,更加灵活。

连接表是一个比价耗时的工作,连接时间将以笛卡尔积的数量增长,连接的表越多,这种性能下降得越厉害。应当尽量避免不必要表的连接。同时尽量使用详细的 where 或 join 条件,放置查询出的数据过多引起内存占用的问题。

inner join outer join 存在两种形式的外部连接:左连接和右连接 left outer join right outer join

mysql 不支持简化字符 *==* 的使用,这两种操作符在其他DBMS职工很流行。

union 组合查询

UNIN 是对多条子查询语句查询出的数据进行并集。

(子句1) union (子句2) union .... [order by];

使用组合查询的机会并不会,这是因为它的特点所限制的,它要求查询的的结果列相似。此时,如果查询的是同一张表,可以合并成where条件的查询。而如果查询的是多张表,可能这种情况比较少。

  • UNION 使用在 select语句之间
  • UNION 每个查询必须包含相同的列、表达式或聚类函数(不过个格列不需要以相同的次序出现)。
  • 类数据类型必须兼容,类型不必完全相同,但必须是DBMS隐含地转换的类型(例如不同数值类型或不同日期类型)。

union 自动去除了重复的行,如果需要,可以使用 union all 取消去重。

union 结果排序 order by

整个 union 只能在最后写一个 order by。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文