gpt4 book ai didi

mysql - 如何在单个查询中选择不相交的列?

转载 作者:行者123 更新时间:2023-11-29 09:18:30 24 4
gpt4 key购买 nike

我有 4 个表,每个表都有不同的列,但它们都有一个共同的列。这是一个整数标识符列。因此,我将有一些整数 x,并且我希望所有 4 个表中的所有行的这一 id 列等于 x。

我尝试过类似的方法:

SELECT table1.col1, table2.col2 FROM table1 LEFT JOIN table2 ON table1.id=x OR coastlinessports.id=x

我得到的行在同一行中具有两个表中的两列。

因此一个结果 block 将具有:

table1.col1, table2.col2

但我真的想要:

table1.col1
tale2.col2

有没有办法可以在不连续执行 4 个选择查询的情况下执行此操作?

最佳答案

如果您希望不同表中的连续行,并且每个表返回不同的行数,则可以使用 UNION。但是,UNION 要求每个 SELECT 返回相同数量的列,因此您需要用一个值(或 NULL)填充缺失的列>),像这样:

DROP TABLE IF EXISTS `table1`;
DROP TABLE IF EXISTS `table2`;

CREATE TABLE `table1` (
`id` int(11) NOT NULL auto_increment,
`col1` VARCHAR(255),
`col2` VARCHAR(255),
PRIMARY KEY (`id`)
) ENGINE=InnoDB;

CREATE TABLE `table2` (
`id` int(11) NOT NULL auto_increment,
`col1` VARCHAR(255),
PRIMARY KEY (`id`)
) ENGINE=InnoDB;

INSERT INTO `table1` VALUES
(1, '1,1', '1,2'),
(2, '2,1', '2,2');

INSERT INTO `table2` VALUES
(1, '1,1'),
(2, '2,1');

SELECT `id`, `col1`, `col2` FROM `table1` WHERE `id` = 1
UNION
SELECT `id`, `col1`, NULL AS `col2` FROM `table2` WHERE `id` = 1;

+----+------+------+
| id | col1 | col2 |
+----+------+------+
| 1 | 1,1 | 1,2 |
| 1 | 1,1 | NULL |
+----+------+------+

如果您想进一步处理 UNION 结果集,可以将其包装在另一个 SELECT 中,如下所示:

SELECT `col1`, `col2` FROM (
SELECT `id`, `col1`, `col2` FROM `table1` WHERE `id` = 1
UNION
SELECT `id`, `col1`, NULL AS `col2` FROM `table2` WHERE `id` = 1
) AS `t1`
ORDER BY col2;

+------+------+
| col1 | col2 |
+------+------+
| 1,1 | NULL |
| 1,1 | 1,2 |
+------+------+

这就是你所追求的吗?

关于mysql - 如何在单个查询中选择不相交的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3155585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com