mysql查询不明确的错误

标签 mysql sql

我在尝试查询此 sql 时遇到错误。

#1052 - where 子句中的“charge_id”列不明确

下面是我的查询。

SELECT `inmate`.`inmate_id`,`inmate`.`fname`,`inmate`.`lname`,`inmate_case`.*,`case_information`.`case_id`,`case_charge`.*,`charge`.`charge_id` FROM inmate , `charge`
LEFT JOIN `prison`.`inmate_case` ON `inmate`.`inmate_id` = `inmate_case`.`inmate_id` 
LEFT JOIN `prison`.`case_information` ON `inmate_case`.`case_id` = `case_information`.`case_id` 
LEFT JOIN `prison`.`case_charge` ON `case_information`.`case_id` = `case_charge`.`case_id` 
 WHERE(( charge_id = 3)) 

最佳答案

您必须有多个表,其中一列名为 charge_id。由于您将其放入结果集中,因此可以将 WHERE 子句更改为

WHERE charge.charge_id = 3

如果您只需要名字和姓氏,那么您可以从您的选择中删除一些列 - 您必须提取多个名为 charge_id 的列(可能来自 case_charge)。您可以将 SELECT 简化为:

SELECT inmate.inmate_id, inmate.fname, inmate.lname
FROM inmate
INNER JOIN prison.inmate_case ON inmate.inmate_id = inmate_case.inmate_id 
INNER JOIN prison.case_information ON inmate_case.case_id = case_information.case_id 
INNER JOIN prison.case_charge ON case_information.case_id = case_charge.case_id
INNER JOIN charge ON case_charge.charge_id = charge.charge_id
 WHERE charge.charge_id = 3

并根据需要向您的 SELECT 显式添加列。我将您的 LEFT JOIN 更改为 INNER JOIN,因为您只需要出现在 charge 表中的囚犯。如果您试图拉出可能或可能不出现在其他表中的囚犯,您将使用 OUTER JOIN。 (尽管在这种情况下它们仍然有效,因为您将结束字段放在 WHERE 子句中。否则您将返回所有囚犯,即使他们根本没有案件或指控)。

关于mysql查询不明确的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23717040/

相关文章:

基于属性出现的 SQL 过滤器组

mysql - 如何正确编写子查询来获取每个帖子的评论数量?

mysql - 游标或处理程序声明之后的变量或条件声明 SQL 语句 (mysql)

php - MySQL/PHP - 避免重复 - (INSERT, UNIQUE, REPLACE)

mysql - 查找导致 SUM 变为 0 的第一条记录

php - sql中的总数量

mysql插入如果不存在没有唯一索引或唯一键但将unicode和ASCII视为不同

php - mysql 如何在某些托管站点上编辑 my.ini

mysql - 内连接语法错误

c++ - #include <mysql.h> 在 Eclipse for C++ 中不起作用 - 如何配置它?