请求编写SQL查询:关联表A与表B并按指定条件输出数据
SQL关联查询实现:匹配两表交集+B表特定前缀记录
数据表内容
Table A
NAME SUR SUB Rakesh sharma Maths Arti Agrwal English Arti Sharma English yash gupta hindi umir abdul Science
Table B
NAME SUR SUB Rakesh sharma Maths Arti Agrwal English Arti Sharma English yash gupta hindi umir abdul Science ramesh agrahari science piyush jain english priyam tiwari maths
期望输出
NAME SUR SUB Rakesh sharma Maths Arti Agrwal English Arti Sharma English yash gupta hindi umir abdul Science ramesh agrahari science
需求说明
- 关联Table A和Table B
- 保留两表中
(NAME, SUR, SUB)完全一致的所有记录 - 额外保留Table B中
SUR字段以agr开头的记录(哪怕该记录不在Table A里) - 剔除Table B中既不在Table A、也不符合
SUR LIKE 'agr%'的记录
可行SQL语句
SELECT DISTINCT b.NAME, b.SUR, b.SUB FROM tableB b LEFT JOIN tableA a ON b.NAME = a.NAME AND b.SUR = a.SUR AND b.SUB = a.SUB WHERE a.NAME IS NOT NULL OR b.SUR LIKE 'agr%';
逻辑说明
- 用
LEFT JOIN关联两张表,以Table B为基础,这样能拿到B的所有记录并匹配A中对应的数据 WHERE条件分两部分:a.NAME IS NOT NULL:筛选出B中在A有对应匹配的记录(也就是两表的交集)OR b.SUR LIKE 'agr%':单独保留B中姓氏前缀符合要求的记录,不管A里有没有
- 加
DISTINCT是为了防止关联后出现重复行(比如A中有重复匹配的情况,示例里没有,但加上更稳妥)
内容的提问来源于stack exchange,提问作者Amir
相关产品推荐
相关产品推荐

