以下查询在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'。
我在这里做错了什么?
答案 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不知道在哪里查找(在哪个表中),因此在表上添加精度将降低风险。此外,在该表格中存在此列(以及该错误。zones
或Zone
可能会导致错误。)