你好伟大的开发者!
我有一个与 MySQL 中的子父字段相关的问题。在这里,我在SQL Fiddle中创建了一个模式。
我有 2 张桌子。
sys_user 表
| username | userDisplayName | userTypeCode |
|----------|-----------------|--------------|
| adhan | Adhan | ENTL |
| aruto | Aruto | RWTL |
| berry | Berry | EDTL |
| chiira | Chiira | QCED |
sys_usertype 表
| userTypeCode | userTypeName | userTypeCodeParent | userTypeLevel |
|--------------|--------------------|--------------------|---------------|
| EDTL | Editor Translator | MSTL | 2 |
| ENTL | English Translator | RWTL | 3 |
| MSTL | Translator | | 1 |
| QCED | Quality Checker | | 1 |
| RWTL | Raw Translator | MSTL | 2 |
所以,我试过这个查询:
SELECT usr.*,
usrty_lv1.userTypeName AS userTypeLevel1 ,
usrty_lv2.userTypeName AS userTypeLevel2,
usrty.userTypeName AS userTypeLevel3
FROM sys_user usr
LEFT JOIN sys_usertype usrty
ON usr.userTypeCode = usrty.userTypeCode
LEFT JOIN sys_usertype usrty_lv2
ON usrty.userTypeCodeParent = usrty_lv2.userTypeCode
LEFT JOIN sys_usertype usrty_lv1
ON usrty_lv2.userTypeCodeParent = usrty_lv1.userTypeCode
结果是:
====================================================================================================
| username | userDisplayName | userTypeCode | userTypeLevel1 | userTypeLevel2 | userTypeLevel3 |
====================================================================================================
| chiira | Chiira | QCED | (null) | (null) | Quality Checker |
| adhan | Adhan | ENTL | Translator | Raw Translator | English Transl.. |
| berry | Berry | EDTL | (null) | Translator | Editor Transla.. |
| aruto | Aruto | RWTL | (null) | Translator | Raw TransLator |
====================================================================================================
我的目标是产生这个结果:
====================================================================================================
| username | userDisplayName | userTypeCode | userTypeLevel1 | userTypeLevel2 | userTypeLevel3 |
====================================================================================================
| chiira | Chiira | QCED | Quality Chec.. | (null) | (null) |
| adhan | Adhan | ENTL | Translator | Raw Translator | English Transl.. |
| berry | Berry | EDTL | Translator | Editor Trans.. | (null) |
| aruto | Aruto | RWTL | Translator | Raw TransLator | (null) |
====================================================================================================
如何做到这一点?我做错了吗?我不喜欢使用 CTE,因为我有很多数据 :(
太感谢了。