mysql - 如何在没有 key 的情况下连接表?

标签 mysql sql

是否可以不用键连接表,

table 1
------------------------------
no           code      area
------------------------------
0122133666   MOB       012221
92444444     LOC       9244
0343443434   DDD       03434
0092635252   INF       92
------------------------------

table 2
------------------------------
code         area      name
------------------------------
MOB          012       mobile-1
MOB          0129      mobile-2
LOC          9244      local-1
LOC          9243      local-2
INF          92        country-1
DDD          034       local-2
DDD          0344      local-3
------------------------------

我想要这样的结果

------------------------------------
no           code      area      name
------------------------------------
0122133666   MOB       012221   mobile-1
92444444     LOC       9244     local-1
0343443434   DDD       03434    local-2
0092635252   INF       92       country-1
--------------------------------------

看起来不可能那样做,谁能帮帮我?

最佳答案

这会给你想要的结果:

SELECT  T1.no,
        T1.code,
        T1.area,
        T2.name
FROM Table1 T1
LEFT JOIN Table2 T2
  ON T1.code = T2.code
  AND T1.area LIKE CONCAT(T2.area,'%')

Here is a sqlfiddle有一个演示。

结果是:

╔═══════════╦══════╦════════╦═══════════╗
║    NO     ║ CODE ║  AREA  ║   NAME    ║
╠═══════════╬══════╬════════╬═══════════╣
║ 122133666 ║ MOB  ║ 012221 ║ mobile-1  ║
║  92444444 ║ LOC  ║   9244 ║ local-1   ║
║ 343443434 ║ DDD  ║  03434 ║ local-2   ║
║  92635252 ║ INF  ║     92 ║ country-1 ║
╚═══════════╩══════╩════════╩═══════════╝

关于mysql - 如何在没有 key 的情况下连接表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22797066/

相关文章:

java - 无论主机名如何,JDBC 都会尝试连接到 "localhost"

php - LIKE MySQL 查询的问题

c# - 从sql中解析对象

c# - DateTime 销毁 View

sql - 使用内连接更新记录

mysql - 带有选定列的 Symfony 1.4 选择查询不起作用

Mysql跨表连接

sql - 使用 generate_series 在 PostgreSQL9.5 中对时间序列进行分箱?

sql - 即使列中有一条记录,Excel-VBA SQL 查询也会返回空白

mysql - 如何恢复mysql中刚刚删除的行?