Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql “on子句”中的列未知错误_Mysql_Sql - Fatal编程技术网

Mysql “on子句”中的列未知错误

Mysql “on子句”中的列未知错误,mysql,sql,Mysql,Sql,因此,我尝试查询三个表,可以执行三个表中的两个表,但不能执行第三个表,我尝试了几种方法,并不断出现此错误: #1054 - Unknown column 'thirdDATA.creator_id' in 'on clause' 这项工作: SELECT * FROM `mainDATA` LEFT JOIN altDATA ON creator_id = altDATA.creator_id 这项工作: SELECT * FROM `mainDATA` LEFT JOIN thi

因此,我尝试查询三个表,可以执行三个表中的两个表,但不能执行第三个表,我尝试了几种方法,并不断出现此错误:

#1054 - Unknown column 'thirdDATA.creator_id' in 'on clause'
这项工作:

SELECT * 
FROM `mainDATA` 
LEFT JOIN altDATA ON creator_id =  altDATA.creator_id
这项工作:

SELECT * 
FROM `mainDATA` 
LEFT JOIN thirdDATA ON creator_id =  thirdDATA.creator_id
LIMIT 0 , 30
这将获得一个错误:

SELECT * 
FROM `mainDATA` 
LEFT JOIN altDATA ON creator_id =  altDATA.creator_id
JOIN thirdDATA ON creator_id =  thirdDATA.creator_id

每当查询中有多个表时,请限定所有列名

你大概打算:

SELECT * 
FROM mainDATA LEFT JOIN
     altDATA
     ON mainDATA.creator_id =  altDATA.creator_id JOIN
     thirdDATA
     ON mainDATA.creator_id =  thirdDATA.creator_id;
如果mainDATA没有创建者id,您描述的行为将起作用。如果是这种情况,第一个查询将被解释为:

SELECT * 
FROM `mainDATA` LEFT JOIN
     altDATA
     ON altDATA.creator_id =  altDATA.creator_id;
第三个将生成错误,因为两个表都有creator_id,并且不清楚last on子句所指的是哪一个。

混合JOIN和LEFT JOIN时,请使用括号覆盖优先级:

SELECT * 
FROM ( `mainDATA` 
       LEFT JOIN altDATA ON creator_id =  altDATA.creator_id )
JOIN thirdDATA ON creator_id =  thirdDATA.creator_id


这样做可以解决您的问题,或者指出创建者id不可访问,因为它隐藏在参数中。

最后一个不合格的创建者id引用是不明确的…但是查询与您的错误消息不匹配…因此,这是否是您收到错误的原因尚不清楚。此外,在涉及多个表的任何查询中使用非限定字段名都是不好的做法。请修改错误消息以匹配表名。最佳做法是限定所有列引用。来自MySQL的错误消息是预期行为。感谢分享状态报告。有问题吗?我在您的查询中没有看到名为creators的表。如果主表没有键进行联接,则此查询的目的是什么?谢谢您的帮助,mainDATA表确实有一个creator\u id。使用您的代码,我仍然得到错误:1054-on子句@rowdyruckus中的未知列“mainDATA.creator\u id”-此方法的一个演示程序有效:-并且原始查询失败,on子句中的列“creator\u id”不明确。因此,我不确定您是如何得到错误的-这些是确切的查询还是已被解释过?即使只是这部分也返回相同的错误:SELECT*FROM mainDATA LEFT JOIN altDATA ON mainDATA.creator\U id=altDATA.creator_id@rowdyruckus . . . 您可以设置SQL小提琴吗?
SELECT * 
FROM `mainDATA` 
LEFT JOIN ( altDATA
            JOIN thirdDATA ON creator_id =  thirdDATA.creator_id )
   ON creator_id =  altDATA.creator_id