mysql - 无需任何键即可连接两个表

标签 mysql sql database join merge

我想合并两个具有相同行的表。 Table1 中的每一行与 table2 中的对应行。

示例:

表1:

    | col1 |  col2  |
       ----------
    |  a   |   b   |
    |  c   |   d   |
           .
           .
           .
          etc    

表2:

    | col3 |  col4  |
       ----------
    |  2   |   5    |
    |  8   |   10   |
           .
           .
           .
          etc    

结果应该是:

| col1 |  col2  | col3 | col4
------------------------------
|  a   |   b    |  2   |   5
|  c   |   d    |  8   |   10

我该怎么做?

最佳答案

为此您需要一个加入 key 。如果您没有,您可以使用变量创建一个:

select t1.col1, t1.col2, t2.col3, t2.col4
from (select t1.*, (@rn1 := @rn1 + 1) as rn
      from table1 t1 cross join
           (select @rn1 := 0) vars
     ) t1 join
     (select t1.*, (@rn2 := @rn2 + 1) as rn
      from table2 t2 cross join
           (select @rn2 := 0) vars
     ) t2
     on t1.rn = t2.rn;

警告:如果没有 order by 子句,SQL 不保证行的排序,因此行可以按任何顺序配对。如果您有所需的排序,请在每个子查询中使用 order by

关于mysql - 无需任何键即可连接两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28012178/

相关文章:

c# - 根据分数和校园将学生分组 - ASP.NET、VB 和 SQL

php - MySql - 连接 2 个表,其中第二个表连接两次

sql - mysql查询数据组

php - 使用 PHP (Code Igniter) 和 MongoDB 构建用户系统

mysql - 如果我们依赖语句中的索引扫描顺序,两个 InnoDB UPDATE 语句是否可以防止 PK 索引死锁?

mysqlimport 无法读取商标符号

php - 带有 --local-infile 参数的 mysql_connect

java - 我们可以添加多个 sql 驱动程序,如 OTD、MySQL Connector/J、PostgreSQL、SyBase JConnect 等吗?

sql - PgSQL 上的累积值和有界总和

database - Laravel 4 生产时出错:调用未定义的方法 Illuminate\Database\QueryException::message()