Mic*_*ver 2 mysql join case-insensitive
我有一个名为work的表,其中包含企业中每个人的注册信息,如下所示:
表:工作
FirstName LastName SponsorshipStatus EnrollmentStatus AdjudicationStatus
--------- -------- ----------------- ---------------- ------------------
JANE DOE Complete Incomplete Incomplete
JOHN DOE Complete Complete Incomplete
MONTY PYTHON Complete Complete Complete
MARY POPPINS Complete Complete Complete
Run Code Online (Sandbox Code Playgroud)
部门经理给我一份她的员工名单,如下面的员工,她需要更新状态:
表:员工
FirstName LastName
--------- --------
John Doe
Mary Poppins
Humpty Dumpty
Run Code Online (Sandbox Code Playgroud)
知道两个表的情况不匹配,我尝试以下查询:
SELECT employees.FirstName, employees.LastName,
SponsorshipStatus, EnrollmentStatus, AdjudicationStatus
FROM employees LEFT JOIN work
ON (UPPER(employees.FirstName) LIKE UPPER(work.FirstName)
AND UPPER(employees.LastName) LIKE UPPER(work.LastName));
Run Code Online (Sandbox Code Playgroud)
......它产生以下结果:
查询结果:
FirstName LastName SponsorshipStatus EnrollmentStatus AdjudicationStatus
--------- -------- ----------------- ---------------- ------------------
JOHN DOE NULL NULL NULL
MARY POPPINS NULL NULL NULL
HUMPTY DUMPTY NULL NULL NULL
Run Code Online (Sandbox Code Playgroud)
这是我期望从查询中获得的:
FirstName LastName SponsorshipStatus EnrollmentStatus AdjudicationStatus
--------- -------- ----------------- ---------------- ------------------
JOHN DOE Complete Complete Incomplete
MARY POPPINS Complete Complete Complete
HUMPTY DUMPTY NULL NULL NULL
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?左连接正常工作,但它没有进行匹配并从工作表中提取相关数据,正如所有空值所证明的那样.
我已经在这里查看过很多帖子,但这些帖子似乎都没有在这里帮助我.
你在滥用LIKE.LIKE除非你是模式匹配,否则不要使用.更改
UPPER(employees.FirstName) LIKE UPPER(work.FirstName)
Run Code Online (Sandbox Code Playgroud)
至
UPPER(employees.FirstName) = UPPER(work.FirstName)
Run Code Online (Sandbox Code Playgroud)
对姓氏也一样.
| 归档时间: |
|
| 查看次数: |
7337 次 |
| 最近记录: |