0

以下查询在 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 子句”中的未知列“区域”。

我在这里做错了什么?

4

2 回答 2

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可能导致错误)。

于 2012-05-10T13:43:35.247 回答
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'
于 2012-05-10T13:37:53.243 回答