MySQL查询在phpMyAdmin中工作,但在站点上不起作用。未知的列'区域'在' where子句'

时间:2012-05-10 13:26:17

标签: php mysql phpmyadmin

以下查询在phpMyAdmin中有效但在我通过PHP网站运行时无效。

SELECT * FROM 
      (SELECT name, zone FROM staff 
        LEFT OUTER JOIN zones 
          ON staff.suburb=zones.suburb
      ) A WHERE zone='2'

以下查询也不适用于网站,但适用于phpMyAdmin:

SELECT name, zone FROM staff 
  LEFT OUTER JOIN zones 
    ON staff.suburb=zones.suburb 
  WHERE zone='2'

两者都有错误:

  

'where子句'中的未知列'zone'。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

如果您想以您提供的方式运行第一个查询,则应该更像这样:

SELECT * 
FROM (
    SELECT name,zone 
    FROM staff 
    LEFT OUTER JOIN zones ON staff.suburb=zones.suburb
) A 
WHERE A.zone='2'

但我完全不理解你为什么要做SUB-SELECT,这是完全没必要的。第二个查询应该有效,除非您输入了印刷错误。另外,最好转义查询中使用的每个列或表名,如下所示:

SELECT `name`, `zone` 
FROM `staff` s 
LEFT OUTER JOIN `zones` z 
    ON s.`suburb` = z.`suburb` 
WHERE z.`zone` = '2'

答案 1 :(得分:0)

试试这个:

SELECT `name`, `zone`
FROM `staff` AS s
LEFT OUTER JOIN `zones` AS z ON `s`.`suburb`=`z`.`suburb`
WHERE `s`.`zone`='2';

假设列zone位于表staff中。如果它在表zones中,请将WHERE更改为:

WHERE `z`.`zone`='2';

这里的关键部分是WHERE子句中的精度。也许MySQL不知道在哪里查找(在哪个表中),因此在表上添加精度将降低风险。此外,在该表格中存在此列(以及该错误。zonesZone可能会导致错误。)