在MYSQL中,如何将多条select语句输出到行数大于1的不同列中

在MYSQL中,如何将多条select语句输出到行数大于1的不同列中,mysql,Mysql,下面是我试图在MYSQL中运行的select语句。输出中有许多行,大约80行。 我想要实现的是,所有四个结果都出现在一个屏幕上,在一次执行中,形成4列 select `name` newname1 from table select `name` newname2 from table2 select `name` newname3 from table3 select `name` newname4 from table4 我在堆栈溢出方面做了很多尝试,但我觉得没有什么关系。 如果我将子查询限

下面是我试图在MYSQL中运行的select语句。输出中有许多行,大约80行。 我想要实现的是,所有四个结果都出现在一个屏幕上,在一次执行中,形成4列

select `name` newname1 from table select `name` newname2 from table2 select `name` newname3 from table3 select `name` newname4 from table4 我在堆栈溢出方面做了很多尝试,但我觉得没有什么关系。 如果我将子查询限制为1,则它对我有效

SELECT (select name newname1 from table1 limit 1 ) as table1 , (select name from newname2 from table 2 limit 1) as table2 数据如下所示

table 1 ======== NAME ======== text sms mobile tv phone table 2 ======== NAME ======== something test road board table 3 ======== NAME ======== landline fixedline elife 应该是

NAME NAME NAME ====== ======= ====== Text something landine sms test fixedline mobile road elife tv board phone 只用

唯一的一点是,由于名称字段使用了4个不同的别名,因此会出现错误。您应该删除别名或为每个别名分配相同的别名

更新:因为OP希望看到不同列中的数据

select `name` newname1, '' newname2, '' newname3, '' newname4 from table
UNION
select '' newname1, `name` newname2,'' newname3, '' newname4 from table2
UNION
select '' newname1,'' newname2,`name` newname3, '' newname4 from table3
UNION
select '' newname1,'' newname2, '' newname3,`name` newname4 from table4

将完成这项工作

看起来您正在随机构建配对。为什么它把文本放在一行,而不是文本测试elife?看来你一点也不在乎。您只需要在三列中并排显示三个完全没有顺序的表

最好的方法是运行三个单独的查询,让你的应用程序或网站将结果放在三列中

如果要在SQL中执行此操作,则必须将生成的行号上的行连接起来,通常使用行号和完全外部连接来完成。MySQL从版本8开始就有行数,到目前为止还没有完全的外部连接。这意味着您甚至必须模拟完整的外部联接。对所有行进行编号需要首先对三个数据集进行排序。然后,必须在连接的三个数据集中找到相同的数字。总之,DBMS需要做很多不必要的工作


我的建议是:不要在SQL中这样做

UNION不会帮助我,因为我希望在不同的列中看到数据。UNION将在一行中提供所有数据。通过更新的查询,您将在四个不同的列中看到数据。工会会给我一排错的。您将获得与每个查询的结果总和一样多的行数,这是可行的,但我在第二列中看到与第一列相反的空值。有没有一种方法可以并行删除这些空数据和大数据。它将减少行大小。另一方面,这样我的行数将从10个表的80变为800,这就是它的工作原理。每次更改表时,都会更改列。如果你想看到一些东西,而不是空白,只需更改部分内部的内容,我们就可以通过一种方法来删除那些相互平行的空数据和大数据,这必须在演示层上进行处理。我们来吧!为了帮助他人帮助您,您应该阅读以下内容:以及您的问题。如果我在表1中找到“John”和“Mary”,在表2中找到“Mike”和“Jane”,那么在结果行中应该显示哪些对?约翰·迈克?约翰·简?玛丽·迈克?玛丽·简?这四种组合?请告诉我们您想在这里应用哪条规则。顺便问一下:您能解释一下为什么名称在不同的表中,以及为什么要在一个结果中显示它们吗?
select `name` newname1, '' newname2, '' newname3, '' newname4 from table
UNION
select '' newname1, `name` newname2,'' newname3, '' newname4 from table2
UNION
select '' newname1,'' newname2,`name` newname3, '' newname4 from table3
UNION
select '' newname1,'' newname2, '' newname3,`name` newname4 from table4