我是sql的新手,但是我遇到了以下问题,其中有以下两个表:
Table A
|---------------------|-----------------------------------------------|
| ID | Email |
|---------------------|-----------------------------------------------|
| 12 | [email protected];[email protected];[email protected] |
|---------------------|-----------------------------------------------|
| 13 | [email protected];[email protected] |
|---------------------|-----------------------------------------------|
Table B
|---------------------|-----------------------------------------------|
| Name | Email |
|---------------------|-----------------------------------------------|
| Mark | [email protected]; |
|---------------------|-----------------------------------------------|
| John | [email protected] |
|---------------------|-----------------------------------------------|
| Alex | [email protected] |
|---------------------|-----------------------------------------------|
| Suds | [email protected] |
|---------------------|-----------------------------------------------|
| Eric | [email protected] |
|---------------------|-----------------------------------------------|
我现在需要合并两个表,但仅在表A中显示其电子邮件所在的用户的名称,在其中分隔电子邮件列
|---------------------|
| Name |
|---------------------|
| Mark |
|---------------------|
| John |
|---------------------|
| Alex |
|---------------------|
这是一个可怕的数据模型-应该修复。多个值不应存储在单个列中。
也就是说,您可以使用join
解决此问题:
select b.email
from a join
b
on ';' + a.email + ';' like '%;' + b.email + ';%';
注意分隔符的使用。这与列表的第一个和最后一个元素匹配。