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

表一

- -ID - -

 1
 2
 3
 4
 5
 7

表b

- -ID - -
 2
 3
 4
 5
 6

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

- - ID - - -
1
2
3
4
5
6
7

注意:我有一个联合解决方案:-
  **select * from a
      UNION
   select * from b;**

我需要替代方案。请专家建议。

最佳答案

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

CREATE TABLE d
  ( id INT NOT NULL
  );

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

然后,如果我们只想有一个查询,我们可以使用( 这是为了好玩,不要在生产中使用 ,这就是我们有 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 和其他表组合中测试:

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

关于mysql - Mysql 中 UNION 子句的替代方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21877357/

10-13 09:51