gpt4 book ai didi

mysql - 如何从多个表中选择两列并在 MySQL 中将它们并排放置(没有关系或条件)?

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:56 25 4
gpt4 key购买 nike

我需要一个 SQL 语句,允许我从一个表中获取一列,从另一个表中获取一列,并将它们并排显示。我一直在研究有关 JOIN 的文献,但它们似乎总是需要一个我不感兴趣的“on”子句。

我发现的最接近的东西是“自然连接”,但这似乎输出了一个结果,该结果为第 1 列的每一行提供了第 2 列的所有行。有什么想法吗?

只是为了说明目的,这就是我想要的......

Table 1

t11
---
0
---
1
---
2

Table 2

t21
---
a
---
b
---
c

期望的结果:

Table 3 (or output of MySQL statement)

t31 | t32
--- | ---
0 | a
--- | ---
1 | b
--- | ---
2 | c

最佳答案

你可以试试这个查询:

SELECT
T1.a AS from_Table1,
T2.a AS from_Table2
FROM
(
SELECT
a,
@rn1 := @rn1 + 1 AS row_number
FROM t11, (SELECT @rn1 := 0) var
) AS T1
INNER JOIN
(
SELECT
a,
@rn2 := @rn2 + 1 AS row_number
FROM t21, (SELECT @rn2 := 0) var
) AS T2
ON T1.row_number = T2.row_number;

SQL FIDDLE DEMO


解释:

我在此查询中使用了 mysql 用户定义的变量。

为了理解上述查询,您需要单独运行此查询。

SELECT
a,
@rn1 := @rn1 + 1 AS row_number
FROM t11, (SELECT @rn1 := 0) var;

此查询将给出以下输出:

来自表 t11:

a   row_number

0 1
1 2
2 3

看,我用表 t11 中的数据创建了一个临时表并为每一行分配一个数字,即行号(由 mysql 用户定义的变量 @rn1 )。

看,(SELECT @rn1 := 0) var查询中的这一行是初始化部分。我的意思是它被初始化一次,值为 zero .稍后在每次查找表格时 t11变量 @rn1递增 1并与列 a 一起打印在相应的行中。

我以同样的方式用来自 t21 的数据创建了另一个临时表和上面一样。

SELECT
a,
@rn2 := @rn2 + 1 AS row_number
FROM t21, (SELECT @rn2 := 0) var;

来自表 t21:

a   row_number

a 1
b 2
c 3

现在您可以制作 INNER JOIN 了在这两个表之间 ( i.e. row_number )。

所以加入这两个表ON row_number并得到预期的结果。

from_Table1     from_Table2

0 a
1 b
2 c

注意:

由于您在从表中选择数据时没有任何排序,您可能会得到随机结果。我很欣赏在从表中选择时按某些字段排序。

谢谢。

关于mysql - 如何从多个表中选择两列并在 MySQL 中将它们并排放置(没有关系或条件)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36116796/

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