msyql中子查询IN【lom599乐百家手机】

 百家乐-数据     |      2020-02-09 04:34

1.ANY关键字

假设any内部的查询语句重返的结果个数是多个,如:result1,result2,result3,那么,

select ...from ... where a > any(...);

->

select ...from ... where a > result1 or a > result2 or a > result3;

2.ALL关键字

ALL关键字与any关键字相同,只可是上面包车型客车or改成and。即:

select ...from ... where a > all(...);

->

select ...from ... where a > result1 and a > result2 and a > result3;

3.SOME关键字

some关键字和any关键字是如出生机勃勃辙的法力。所以:

select ...from ... where a > some(...);

->

select ...from ... where a > result1 or a > result2 or a > result3;

4.IN关键字

IN运算符用于WHERE表达式中,以列表项的款式帮忙四个选取,语法如下:

  WHERE column IN (value1,value2,...)
  WHERE column NOT IN (value1,value2,...)
当 IN 前面加上 NOT运算符时,表示与 IN 相反的意味,即不在此些列表项内选拔。代码如下:

查询SELECT ID,NAME FROM A WHERE ID IN (SELECT AID FROM B)       //查询B表中AID的记录SELECT ID,NAME FROM A WHERE ID NOT IN (SELECT AID FROM B)    //意思和上面相反删除delete from articles where id in (1,2,3);             //删除id=1,id=2,id=3的记录delete from articles where id not in (1);             //删除id!=1的记录

词语IN*是*"=ANY"的别称。因而,这五个语句是同样的:

SELECT s1 FROM t1 WHERE s1 = ANY (SELECT s1 FROM t2);SELECT s1 FROM t1 WHERE s1 IN  (SELECT s1 FROM t2);

5.EXISTS关键字

MySQL EXISTS 和 NOT EXISTS 子查询语法如下:

  SELECT ... FROM table WHERE  EXISTS (subquery)
该语法可以精晓为:将主查询的数码,放到子查询中做规范表明,依听大人表达结果(TRUE 或 FALSE)来调整主查询的多少结果是或不是足以保留

mysql> SELECT * FROM employee  -> WHERE EXISTS  -> (SELECT d_name FROM department WHERE d_id=1004);Empty set (0.00 sec)

此处内层循环并未询问到满意条件的结果,因此回到false,外层查询不进行。

NOT EXISTS刚巧与之相反

自然,EXISTS关键字可以与别的的查询条件一同使用,条件表明式与EXISTS关键字以内用AND或者OR来连接,如下:

mysql> SELECT * FROM employee  -> WHERE age>24 AND EXISTS  -> (SELECT d_name FROM department WHERE d_id=1003);

提示:
•EXISTS (subquery) 只返回 TRUEFALSE,因而子查询中的 SELECT * 也能够是 SELECT 1 或其余,官方说法是实际上实施时会忽视 SELECT 清单,由此并未有区分。
•EXISTS 子查询的骨子里推行进程可能由此了优化并不是我们精通上的种种比较,尽管顾忌成效难题,可進展实际核算以鲜明是否有效用难题。
•EXISTS 子查询往往也能够用规范表明式、其余子查询也许 JOIN 来庖代,何种最优必要切实难点具体深入分析

6.UNION关键字

MySQL UNION 用于把来自七个 SELECT 语句的结果结缘到四个结出集合中。语法为:

  SELECT column,... FROM table1 
  UNION [ALL]
  SELECT column,... FROM table2
  ...

在三个 SELECT 语句中,对应的列应该具有长久以来的字段属性,且第一个 SELECT 语句中被运用的字段名称也被用于结果的字段名称

UNION 与 UNION ALL 的区别

当使用 UNION 时,MySQL 会把结果聚集再次的记录删掉,而使用 UNION ALL ,MySQL 会把拥有的记录再次来到,且功用超越 UNION。

mysql> SELECT d_id FROM employee  -> UNION  -> SELECT d_id FROM department;+------+| d_id |+------+| 1001 || 1002 || 1004 || 1003 |+------+

联合比较好精晓,也便是将几个查询的结果归总在同步,然后去除其中的重复记录,要是想保留重复记录能够利用UNION ALL语句。

上一篇:MySQL的记录长度 下一篇:没有了