没有键/索引的 MYSQL 连接表

标签 mysql sql join

如标题所说,我想加入 2 个没有键的表进行比较。

mysql join tables without keys

这个例子描述的是初始情况,但是他是求笛卡尔积。 我想要这样的东西

Table 1: t1
red
blue
big
small


Table 2: t2
cat
dog
person

结果应该是这样的:

red cat
blue dog
big person
small NULL <--- can be empty (not shown)

仅使用 sql 就可以实现这样的事情吗?

最佳答案

由于 MySQL 没有 ROW_ID() 函数,您必须使用递增的用户变量来伪造它:

select adjective, noun
from (select @counter1 := @counter1+1 as counter, adjective
      from table1, (select @counter1 := 0) init) t1
left join (select @counter2 := @counter2+1 as counter, noun
           from table2, (select @counter2 := 0) init) t2
using (counter)

DEMO

请注意,这假设表 1 中的形容词总是多于表 2 中的名词。如果您需要让任一表变小,则需要使用全外连接。正如 Andriy M 提到的,MySQL 没有对此的内置支持,但如果您搜索 SO 或谷歌,您应该找到对其进行编码的方法。

关于没有键/索引的 MYSQL 连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18269662/

相关文章:

php - 查询结果数组修改

sql - INSERT-OUTPUT 包括其他表中的列

sql - 在 select 语句中动态对不同的 sql 行进行编号

SQL 电子商务数据库 - 获取仅由一个用户购买的产品数量

arrays - 在 Swift 中,我想将 "join"两个序列放入一个元组序列中

Mysql Join 查询与日期分组

python - 一对多关系中的 Django 查询

mysql - 如何配置 IntelliJ IDEA 对 MySQL 数据源使用明文密码身份验证?

php - 从另一个类内部调用类函数

c# - 如何定义到 SQL Server 2008 数据库的连接字符串?