Mysql SQL左/右连接问题
我试图运行下面的脚本,但总是得到名称字段的空值Mysql SQL左/右连接问题,mysql,sql,Mysql,Sql,我试图运行下面的脚本,但总是得到名称字段的空值 SELECT u.name AS _user_name, s.name AS _school_name FROM fwg_files AS f LEFT JOIN users AS u ON u.id = f.user_id LEFT JOIN user_profiles AS up ON up.user_id = u.id LEFT JOIN school AS s ON s.id = up.profile_value 在学校表上的JOIN中,
SELECT u.name AS _user_name, s.name AS _school_name
FROM fwg_files AS f
LEFT JOIN users AS u ON u.id = f.user_id
LEFT JOIN user_profiles AS up ON up.user_id = u.id
LEFT JOIN school AS s ON s.id = up.profile_value
在学校表上的JOIN中,我似乎遇到了问题,我试图选择s.id,但它也返回空值。当我将最后一行更改为右连接时,它开始工作,但我只能看到s.name值,其他值为NULL
表fwg_文件
id | user_id
240 | 414
241 | 436
表用户
id | name
414 | Name 1
436 | Name 2
表用户配置文件
user_id | profile_value
414 | "6"
436 | "14"
桌上学校
id | name
6 | School 1
14 | School 2
谢谢如果必须使用
profile\u value
列上的引号,则需要混合使用CONVERT
和SUBSTRING\u INDEX
来删除引号,以便能够执行该操作
检查以下代码:
SELECT users.name as User, s.name as School
FROM fwg_files AS ff
LEFT JOIN users ON users.id = ff.user_id
LEFT JOIN user_profiles AS up ON up.user_id = users.id
LEFT JOIN school AS s ON s.id = CONVERT(SUBSTRING_INDEX(up.profile_value,'"',-2),UNSIGNED INTEGER);
这里是引文。Sac:不,我没有,你有什么建议吗?你的配置文件值应该是一个整数类型的外键,而不是varcharI试图修改最后一行,以s ON s.id=CAST(up.profile_值为UNSIGNED)左加入fad9u学校,但是仍然有和INTSac相同的结果来转换配置文件值:我修改了精确的值-问题是在值中引用-看看你的SqlFiddle非常感谢!!!它工作得很好:-)