MariaDB 连接 2 个具有相同行数的表
MariaDB concatenate 2 tables with same number of rows
假设我有 2 个 table 具有完全相同的行数,但没有其他明显的关系:
table一个
ID
items
1
banana
2
orange
tableB
itemID
volume
5550
50
5551
70
我可以水平连接这 2 个 table,形成 1 个 table 吗?
ID
items
itemID
volume
1
banana
5550
50
2
orange
5551
70
试试这个
create table TableA(ID INT, Items varchar(20));
create table TableB(ItemId INT, volume varchar(20));
insert into TableA(Id, items) values (1, 'banana'), (2, 'orange');
insert into TableB(ItemId, volume) values (5550, '50'), (5551, '70');
SELECT A.ID, A.Items, B.ItemId, B.volume
FROM
(
SELECT ID, Items, rownum()R
FROM TableA
)A INNER join
(
SELECT ItemId,volume,rownum()R
FROM TableB
)B ON A.R=B.R
如果您有 2 个表,行数完全相同,但没有其他明显的关系,并且在两个表上,ID 和 itemID 分别定义了行的唯一性,您可以应用 MySQL ROW_NUMBER Function 并加入 row_number, order by 子句很重要。
尝试:
SELECT tbla.ID, tbla.Items, tblb.ItemId, tblb.volume
FROM (
SELECT ID, Items, row_number() over( order by ID desc )row_numA
FROM TableA
)tbla
INNER join
( SELECT ItemId,volume,row_number() over(order by ItemId desc)row_numB
FROM TableB
) tblb ON tbla.row_numA=tblb.row_numB
order by tbla.ID asc;
https://dbfiddle.uk/?rdbms=mariadb_10.6&fiddle=15d13d29a84a55c4d029115c87eebe8f
假设我有 2 个 table 具有完全相同的行数,但没有其他明显的关系:
table一个
ID | items |
---|---|
1 | banana |
2 | orange |
tableB
itemID | volume |
---|---|
5550 | 50 |
5551 | 70 |
我可以水平连接这 2 个 table,形成 1 个 table 吗?
ID | items | itemID | volume |
---|---|---|---|
1 | banana | 5550 | 50 |
2 | orange | 5551 | 70 |
试试这个
create table TableA(ID INT, Items varchar(20));
create table TableB(ItemId INT, volume varchar(20));
insert into TableA(Id, items) values (1, 'banana'), (2, 'orange');
insert into TableB(ItemId, volume) values (5550, '50'), (5551, '70');
SELECT A.ID, A.Items, B.ItemId, B.volume
FROM
(
SELECT ID, Items, rownum()R
FROM TableA
)A INNER join
(
SELECT ItemId,volume,rownum()R
FROM TableB
)B ON A.R=B.R
如果您有 2 个表,行数完全相同,但没有其他明显的关系,并且在两个表上,ID 和 itemID 分别定义了行的唯一性,您可以应用 MySQL ROW_NUMBER Function 并加入 row_number, order by 子句很重要。
尝试:
SELECT tbla.ID, tbla.Items, tblb.ItemId, tblb.volume
FROM (
SELECT ID, Items, row_number() over( order by ID desc )row_numA
FROM TableA
)tbla
INNER join
( SELECT ItemId,volume,row_number() over(order by ItemId desc)row_numB
FROM TableB
) tblb ON tbla.row_numA=tblb.row_numB
order by tbla.ID asc;
https://dbfiddle.uk/?rdbms=mariadb_10.6&fiddle=15d13d29a84a55c4d029115c87eebe8f