MySQL中存在、在和任何的基本用法
  • 作者:admin
  • 发表时间:2021-03-17 07:50
  • 来源:未知

本文主要介绍MySQL中的exists、in和any的基本用法。通过示例代码详细介绍,对大家的学习或工作有一定的参考学习价值。需要的朋友可以和边肖一起学习。

【1】存在

使用循环逐个查询外观,每次检查存在的条件语句。

当exists中的条件语句可以返回记录行时(不管记录行有多少,只要能返回),条件为真,返回当前循环记录。相反,如果exists中的条件语句不能返回记录行,并且条件为false,则当前循环记录将被丢弃。

exists条件类似于布尔条件,可以返回结果集时为1,不能返回结果集时为0。

语法格式如下:

从[不存在]的表_名称中选择*(选择唐山网络公司.);

例子如下:

从p_user_2中选择*

其中EXISTS(从p_user中选择id=12)

如果在p_user表中有一条id为12的记录,那么p_user_2表中的所有记录都将被返回。否则,返回记录为空。

如果它不存在,它就与上面相反。

一般来说,如果A表中有N条记录,那么exists查询就是把这N条记录一条一条的拿出来,然后N次判断存在条件

【2】在

语法格式如下:

从A中选择*其中列(从B中选择列);

需要注意的是,其中,列是的一列,对应于in的子查询语句返回一列多行的结果集。

请注意,中对应的select语句返回的结果必须是一列!可以是多行。

例子如下:

从p_user_2中选择*其中id[不]在(从p_user中选择id)

查询p_user表id集中id为p_user _ 2的记录。不在则相反。

【3】3之间的关系存在并在

sql更改后,它们可以实现相同的目标:

从p_user_2中选择*

其中id [not] in(从p_user中选择id);

从p_user_2中选择*

其中[not] EXISTS(从p_user中选择id,其中id=p_user_2.id)

那么什么时候用存在还是在?

* *如果查询中的两个表具有相同的大小,则in和exists之间几乎没有区别。**

* *如果两个表中的一个较小,另一个较大,则子查询表对较大的表使用,对较小的表使用:* *

例如:表a(小表),表b(大表)

(1)子查询表是表b:

从列表中选择*

其中抄送(从B中选择抄送)

//效率低下,使用a表上cc列的索引;

从列表中选择*

存在的地方(从B中选择cc,其中cc=A.cc)

//效率高,使用B表上cc列的索引。

子查询表为表a:

从B中选择*

抄送位置(从A中选择抄送)

//效率高,使用表b上cc列的索引;

从B中选择*

存在于(从A中选择cc,其中cc=B.cc)

//效率低,使用a表上cc列的索引。