Mysql的联合查询union

    科技2024-07-01  65

    文章来源:https://www.cnblogs.com/alex0702/p/10767005.html

    语法:

    select 字段|常量|表达式|函数 【from 表】 【where 条件】 union 【all】 select 字段|常量|表达式|函数 【from 表】 【where 条件】 union 【all】 select 字段|常量|表达式|函数 【from 表】 【where 条件】 union 【all】 ..... select 字段|常量|表达式|函数 【from 表】 【where 条件】

    特点

    1、多条查询语句的查询的列数必须是一致的 2、多条查询语句的查询的列的类型几乎相同 3、union代表去重,union all代表不去重

    案例

    UNION:查询部门编号>90或邮箱包含a的员工信息 SELECT * FROM employees WHERE email LIKE '%a%' OR department_id>90;; SELECT * FROM employees WHERE email LIKE '%a%' UNION SELECT * FROM employees WHERE department_id>90; UNION ALL:查询中国用户中男性的信息以及外国用户中年男性的用户信息去掉重复记录重复记录是指查询中各个字段完全重复的记录,如下例,若 cname 一样但 id 号不一样算作不同记录。 SELECT id,cname FROM t_ca WHERE csex='男' UNION ALL SELECT t_id,tname FROM t_ua WHERE tGender='male';

    UNION 子句中使用 ORDER BY

    子句中使用 ORDER BY,即将 SELECT 子句的结果先排序,然后再把这些子句查询的结果进行集合。

    在子句中使用 ORDER BY,由于优先级问题,需要将整个子句加圆括号(),且必须与 LIMIT 结合使用:

    (SELECT aid,title FROM article ORDER BY aid DESC LIMIT 10) UNION ALL (SELECT bid,title FROM blog ORDER BY bid DESC LIMIT 10)

    UNION 整句中使用 ORDER BY

    如果想使用 ORDER BY 或 LIMIT 来对全部 UNION 结果进行分类或限制,则应对单个 SELECT 语句加圆括号,并把 ORDER BY 或 LIMIT 放到最后一个的后面。 (SELECT aid,title FROM article) UNION ALL (SELECT bid,title FROM blog) ORDER BY aid DESC

    UNION ORDER BY 应用于别名

    如果 SELECT 中使用到了字段别名,则 OEDER BY 必须引用别名: (SELECT a AS b FROM table) UNION (SELECT ...) ORDER BY b

    UNION LIMIT

    在 MySQL UNION 中使用 LIMIT 用于限制返回的记录条数,如果对 SELECT 子句做限制,需要对 SELECT 添加圆括号: (SELECT aid,title FROM article LIMIT 2) UNION ALL (SELECT bid,title FROM blog LIMIT 2) 该 SQL 会返回个 SELECT 语句的两条记录,如果不添加圆括号,则最后一个 LIMIT 2 会作用于整个 UNION 语句而一共返回 2 条记录同 ORDER BY 类似,当需要对整个 UNION 的结果进行 LIMIT 限制时,建议将各个 SELECT 语句用圆括号括起来以使语句更加清晰: (SELECT aid,title FROM article) UNION ALL (SELECT bid,title FROM blog) LIMIT 2
    Processed: 0.008, SQL: 8