Mysql中UNION子句的替代 [英] Alternative to UNION clause in Mysql

查看:548
本文介绍了Mysql中UNION子句的替代的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个表:-表a,表b.

I have two table :- table a, table b.

表a

-ID ---

 1
 2
 3
 4
 5
 7

表b

--- ID ----

---ID----

 2
 3
 4
 5
 6

我必须在没有 UNION 命令的情况下获得这样的输出:-

I have to get Output Like this without UNION Command:-

---- ID -----

----ID-----

1
2
3
4
5
6
7

注意:我对联合有一个解决方案:-

  **select * from a
      UNION
   select * from b;**

我需要替代此方法.请专家建议.

推荐答案

为此,我们需要另一个具有(至少)2行的表:

We need another table with (at least) 2 rows for this:

CREATE TABLE d
  ( id INT NOT NULL 
  );

INSERT INTO d
  (id)
VALUES
  (0), (1) ;

然后,如果我们只想查询一个,我们可以使用(这很有趣,请不要在生产中使用,这就是为什么我们有 UNION ):

Then, if we want to have only one query, we can use (this is for fun, DO NOT USE in production, that's why we have UNION):

SELECT DISTINCT
    COALESCE(aa.id, bb.id) AS id
FROM 
    d
  LEFT JOIN a AS aa ON d.id = 0
  LEFT JOIN b AS bb ON d.id = 1
WHERE 
    COALESCE(aa.id, bb.id) IS NOT NULL
ORDER BY 
    id ;

SQLfiddle.com 和其他测试中进行了测试表格组合:

Tested at SQLfiddle.com, and for other table combinations:

1行-1行
2行-2行
0行-1行
0行-2行
0行-0行

1 row - 1 row
2 rows - 2 rows
0 rows - 1 row
0 rows - 2 rows
0 rows - 0 rows

这篇关于Mysql中UNION子句的替代的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆