Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 组合select查询的结果而不使用集合运算符(UNION)_Mysql_Sql - Fatal编程技术网

Mysql 组合select查询的结果而不使用集合运算符(UNION)

Mysql 组合select查询的结果而不使用集合运算符(UNION),mysql,sql,Mysql,Sql,如果不使用union运算符组合sql中的查询结果(其工作原理与union/union all相同),是否有可能呢 CREATE TABLE Table1 (`id` int, `name` varchar(32)); CREATE TABLE Table2 (`id` int, `name` varchar(32)); 和样本数据 表1: | ID | NAME | |----|-------| | 1 | name1 | | 2 | name2 | | 3 | name3 | 输出:

如果不使用union运算符组合sql中的查询结果(其工作原理与union/union all相同),是否有可能呢

CREATE TABLE Table1
(`id` int, `name` varchar(32));
CREATE TABLE Table2
(`id` int, `name` varchar(32));
和样本数据

表1:

| ID | NAME | |----|-------| | 1 | name1 | | 2 | name2 | | 3 | name3 | 输出:

| ID | NAME | |----|--------| | 1 | name1 | | 2 | name2 | | 3 | name3 | | 11 | name11 | | 22 | name22 | | 33 | name33 | | 1 | name1 | | ID | NAME | |----|--------| | 1 | name1 | | 2 | name2 | | 3 | name3 | | 11 | name11 | | 22 | name22 | | 33 | name33 | 输出:

| ID | NAME | |----|--------| | 1 | name1 | | 2 | name2 | | 3 | name3 | | 11 | name11 | | 22 | name22 | | 33 | name33 | | 1 | name1 | | ID | NAME | |----|--------| | 1 | name1 | | 2 | name2 | | 3 | name3 | | 11 | name11 | | 22 | name22 | | 33 | name33 | |ID |名称| |----|--------| |1 |名称1| |2 |名称2| |3 |名称3| |11 |姓名11| |22 |姓名22| |33 |姓名33|
这里是演示

让我们假设您有两个表要联合

CREATE TABLE Table1
(`id` int, `name` varchar(32));
CREATE TABLE Table2
(`id` int, `name` varchar(32));
和样本数据

表1:

| ID | NAME | |----|-------| | 1 | name1 | | 2 | name2 | | 3 | name3 | 输出:

| ID | NAME | |----|--------| | 1 | name1 | | 2 | name2 | | 3 | name3 | | 11 | name11 | | 22 | name22 | | 33 | name33 | | 1 | name1 | | ID | NAME | |----|--------| | 1 | name1 | | 2 | name2 | | 3 | name3 | | 11 | name11 | | 22 | name22 | | 33 | name33 | 输出:

| ID | NAME | |----|--------| | 1 | name1 | | 2 | name2 | | 3 | name3 | | 11 | name11 | | 22 | name22 | | 33 | name33 | | 1 | name1 | | ID | NAME | |----|--------| | 1 | name1 | | 2 | name2 | | 3 | name3 | | 11 | name11 | | 22 | name22 | | 33 | name33 | |ID |名称| |----|--------| |1 |名称1| |2 |名称2| |3 |名称3| |11 |姓名11| |22 |姓名22| |33 |姓名33|
下面是演示

我们尝试并得到了简单的查询,但我不知道这有多有效

CREATE TABLE tableA
  ( col1 INTEGER , col2 INTEGER
  );
CREATE TABLE tableB
  ( col1 INTEGER , col2 INTEGER
  )

// insert statements
INSERT INTO tableA
  (COL1, COL2
  ) VALUES
  (12, 13
  );
INSERT INTO tableA
  (COL1, COL2
  ) VALUES
  (14, 15
  );
INSERT INTO tableB
  (COL1, COL2
  ) VALUES
  (12, 13
  );
INSERT INTO tableB
  (COL1, COL2
  ) VALUES
  (14, 15
  );

// for union all
SELECT (
  CASE
    WHEN b.col1 IS NULL
    THEN a.col1
    ELSE b.col1
  END)
FROM
  (SELECT COL1 FROM TableB
  )b
FULL OUTER JOIN
  (SELECT COL1 FROM TableA
  ) a
ON 1=2

// for union
SELECT (
  CASE
    WHEN b.col1 IS NULL
    THEN a.col1
    WHEN b.col1=a.col1
    THEN b.col1
    ELSE b.col1
  END)
FROM
  (SELECT COL1 FROM TableB
  )b
FULL OUTER JOIN
  (SELECT COL1 FROM TableA
  ) a
ON a.col1=b.col1

我们尝试并得到了简单的查询,但我不知道这有多有效

CREATE TABLE tableA
  ( col1 INTEGER , col2 INTEGER
  );
CREATE TABLE tableB
  ( col1 INTEGER , col2 INTEGER
  )

// insert statements
INSERT INTO tableA
  (COL1, COL2
  ) VALUES
  (12, 13
  );
INSERT INTO tableA
  (COL1, COL2
  ) VALUES
  (14, 15
  );
INSERT INTO tableB
  (COL1, COL2
  ) VALUES
  (12, 13
  );
INSERT INTO tableB
  (COL1, COL2
  ) VALUES
  (14, 15
  );

// for union all
SELECT (
  CASE
    WHEN b.col1 IS NULL
    THEN a.col1
    ELSE b.col1
  END)
FROM
  (SELECT COL1 FROM TableB
  )b
FULL OUTER JOIN
  (SELECT COL1 FROM TableA
  ) a
ON 1=2

// for union
SELECT (
  CASE
    WHEN b.col1 IS NULL
    THEN a.col1
    WHEN b.col1=a.col1
    THEN b.col1
    ELSE b.col1
  END)
FROM
  (SELECT COL1 FROM TableB
  )b
FULL OUTER JOIN
  (SELECT COL1 FROM TableA
  ) a
ON a.col1=b.col1

+1-我花了一些时间来理解您使用信息方案的内容(以及原因)。非常好的解决方案。太棒了,真的很容易理解+1-我花了一些时间来理解您使用信息方案的内容(以及原因)。非常好的解决方案。太棒了,真的很容易理解!请分享您的宝贵评论您的原始问题被MySQL标记,MySQL中没有实现
完全连接
。是的,我同意。。。但我们也可以在MySQL中使用完全外部连接,但语法会有所不同think@Basu考虑到您最初的需求,您自己的答案是不正确的,因为MySql没有
完全外部连接
,除非您有其他MySql解决方案。这不符合SO规则。问一个问题,然后回答另一个问题,并且不接受针对您原始需求集给出的答案…好的,对不起,我错误地提到了MySql。请分享您的宝贵评论您的原始问题是用MySql标记的,并且MySql中没有实现
完全连接
。是的,我同意。。。但我们也可以在MySQL中使用完全外部连接,但语法会有所不同think@Basu考虑到您最初的需求,您自己的答案是不正确的,因为MySql没有
完全外部连接
,除非您有其他MySql解决方案。这不符合SO规则。问一个问题,然后回答另一个问题,并且不接受对您最初的需求集给出的答案…好的,对不起,我错误地提到了MySql。