mysql - SQL Join 和条件
问题描述
我有一个案例:
表格1:
+------------+---------------+----------------------+
| Address_id | road name | suburb |
+------------+---------------+----------------------+
| 500011 | Bealey avenue | Christchurch Central |
+------------+---------------+----------------------+
表 2:
+--------+------------------------------------------------+--------+
| Job_id | streets name | suburb |
+--------+------------------------------------------------+--------+
| 15678J | Bealey avenue, Salisbury Street, Gordon avenue | |
+--------+------------------------------------------------+--------+
如何编写 SQL 查询以在两个条件下加入表:
郊区应该匹配
Table 1
(在本例中为 Bealey 大道)中的道路名称应该在Table 2
.
我需要加入这两个表的条件是,郊区应该在两者中完全匹配,并且道路名称“Bealey avenue”Table 1
应该在其他街道名称中Table 2
。
解决方案
尽管我完全同意您应该尽可能避免这种表格设计的评论,但这里有一个您可以使用的可能解决方案。
示例表设置:
create table table1 (
address_id int,
road_name varchar(50),
suburb varchar(50)
);
create table table2 (
job_id varchar(50),
streets_name varchar(250),
suburb varchar(50)
);
insert into table1
values (500011, 'Bealey avenue', 'Christchurch Central');
insert into table2
values ('15678J', 'Bealey avenue, Salisbury Street, Gordon avenue', 'Christchurch Central');
询问:
select *
from table1 t1
join table2 t2 on
t1.suburb = t2.suburb
and t2.streets_name REGEXP CONCAT('\\b', t1.road_name, '\\b')
推荐阅读
- r - 如何使用线性规划获得两个变量的最佳截止值
- css - div 不会随 CSS 属性改变大小
- robotframework - ROBOT Framework 无法点击弹出的接受按钮
- reactjs - 如何在加载 API 数据之前添加微调器?
- neural-network - 遗传算法 - 适应度函数
- python - 如何自动化将云监视图添加到仪表板的过程?
- c# - 当客户端超时取消控制器操作时,ASP.NET MVC3 应用程序将如何调用某些代码?
- java - Java.lang.OutOfMemoryError:将 xlsx 转换为 csv 格式时的 JAVA HEAP SPACE。我试过这个没有运气
-Xms400m -Xmx4096m - gatsby - Gatsby Algolia 基于标签的搜索
- java - IntelliJ IDEA 不运行类