mysql查询模糊错误

时间:2014-05-17 23:17:57

标签: mysql sql

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

#1052 - Column 'charge_id' in where clause is ambiguous

以下是我的查询。

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)) 

1 个答案:

答案 0 :(得分: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条款中。如果没有这个,你就会归还所有的囚犯,即使他们根本没有任何案件或指控。