0

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

从表中选择 `name` newname1
从 table2 中选择 `name` newname2
从 table3 中选择 `name` newname3
从 table4 中选择 `name` newname4

我在堆栈溢出中尝试了很多,但我觉得相关。如果我将子查询限制为 1,它对我有用

SELECT(从 table1 限制 1 中选择名称 newname1)作为 table1 ,
(select name from newname2 from table 2 limit 1) as table2

数据如下所示

表格1   
========
姓名
========
文本
短信
移动的
电视
电话

表 2
========
姓名
========
某物
测试
路
木板

表3
========
姓名
========
座机
固定的线
生活

应该像

姓名 姓名 姓名
====== =============
给某事发短信
短信测试固话
移动道路elife
电视板     
电话  

4

2 回答 2

1

只需使用UNION

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

唯一的一点是它会引发错误,因为您使用 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

将完成这项工作

于 2019-11-28T14:54:52.873 回答
0

看起来您正在随机构建对。为什么它Text-something-landine在一排而不是,比如说,Text-test-elife?看来你根本不在乎。您只想并排显示三个没有顺序的表(在三列中)。

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

如果您想在 SQL 中执行此操作,则必须在某个生成的行号上连接行(通常使用ROW_NUMBERand完成FULL OUTER JOIN)。MySQLROW_NUMBER版本 8 的功能,FULL OUTER JOIN到目前为止还没有。这意味着您甚至必须模仿完整的外部联接。对所有行进行编号需要首先对三个数据集进行排序。然后必须在连接的三个数据集中找到相同的数字。总而言之,为 DBMS 做了很多不必要的工作

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

于 2019-11-28T21:10:45.343 回答