带有内部联接的MySQL错误1142
当街道地址和邮政编码在两个表之间匹配时,我试图从CM_主表返回PP表中所有列以及匹配的LOCATIONGUID记录。上述代码返回错误:带有内部联接的MySQL错误1142,mysql,sql,Mysql,Sql,当街道地址和邮政编码在两个表之间匹配时,我试图从CM_主表返回PP表中所有列以及匹配的LOCATIONGUID记录。上述代码返回错误: SELECT * FROM `PP` INNER JOIN `CM_MASTER`.`LOCATIONGUID` ON `PP`.`ADDR` = `CM_MASTER`.`ADDRESS1` AND `PP`.`ZIP` = LEFT(`CM_MASTER`.`POSTALCODE`,5); 我正在phpMyAdmin中运行此查询。 有人能给我指出一个可
SELECT * FROM `PP`
INNER JOIN `CM_MASTER`.`LOCATIONGUID`
ON `PP`.`ADDR` = `CM_MASTER`.`ADDRESS1`
AND `PP`.`ZIP` = LEFT(`CM_MASTER`.`POSTALCODE`,5);
我正在phpMyAdmin中运行此查询。
有人能给我指出一个可行的方向吗
编辑:
cm_主表有address1、zip和LOCATIONGUID列。
pp表有addr和zip列。
如果pp.addr=cm_master.address1和pp.zp=cm_master.zip,则
返回查询中已加入cm_master.LOCATIONGUID的记录。
这可能吗?您的语法错误。您需要在表\名称.列\名称周围放置左侧,而不是拆分表\名称和列\名称 所以改变
#1142 - SELECT command denied to user 'ameridw5'@'localhost' for table 'LOCATIONGUID'
对此
CM_MASTER.LEFT(POSTALCODE,5)
完整查询将是:
LEFT(CM_MASTER.POSTALCODE,5)
编辑时,不清楚您的表结构是什么,但您需要LocationGUID,然后可能还需要添加该列:
SELECT *
FROM `PP`
INNER JOIN `CM_MASTER`
ON `PP`.`ADDR` = `CM_MASTER`.`ADDRESS1`
AND `PP`.`ZIP` = LEFT(`CM_MASTER`.`POSTALCODE`,5) ;
此用户ameridw5似乎没有表LOCATIONGUID的权限
只需设置此用户的所有权限
SELECT *
FROM `PP`
INNER JOIN `CM_MASTER`
ON `PP`.`LOCATIONGUID` = `CM_MASTER`.`LOCATIONGUID`
AND `PP`.`ADDR` = `CM_MASTER`.`ADDRESS1`
AND `PP`.`ZIP` = LEFT(`CM_MASTER`.`POSTALCODE`,5) ;
文档:请将CM_MASTER.LEFTPOSTALCODE,5更改为此LEFTCM_MASTER.POSTALCODE,5,这样我们可以向上投票给您。您正在查询的用户是否有权从LOCATIONGUID表中进行选择?请尝试直接从中选择。谢谢,我刚刚这样做了,但它仍然会抛出相同的错误。@user2344300查看我的编辑,cm_master是表名吗?如果是这样,那么您不需要在它的末尾有LOCATIONGUID。或者表名为LOCATIONGUID?是的,cm_master是表名,去掉其末尾的LOCATIONGUID确实可以使其工作,但它最终将两个表连接起来,而不仅仅是cm_master表的LOCATIONGUID列连接到整个PP表。@user2344300 PP表是否有LOCATIONGUID?您可能需要用表结构编辑OP,然后再编辑您要做的。@Adrian问题是他们正试图在表\u name.column\u name上进行连接。这不是权限问题。CM_MASTER.LOCATIONGUID是包含列的表,没有名为LOCATIONGUID的表。如果联接内部联接CM_MASTER.LOCATIONGUID,则假定为db.table,但此查询并非如此。如果你阅读了整个问题和评论,你会发现,因此我认为这不值得投反对票。
GRANT ALL PRIVILEGES on mydb.* to 'ameridw5'@'localhost' identified by 'you';