我有两个表:-表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/