这适用于 mysql 4,但不适用于 mysql 5。在我的新 centos 5.8 服务器 mysql 5.0.95 上的 phpmyadmin 中运行此查询
GIVES: #1054 - Unknown column 'thr.thread_address_id' in 'on clause'
所有表格均已验证。
在线找到一个建议,将值移至 FROM 子句的末尾,但它只是修复了该特定错误并为下一行创建一个错误。
FROM 线程 th,地址 a,地址 ad,队列 q,线程 thr,票证 t(解决有关票证 t 的警告)
FROM 线程 th,地址 a,地址 ad,队列 q,票证 t,线程 thr(解决有关线程 thr 的警告)
SELECT t.ticket_id, t.ticket_subject, t.ticket_priority, t.ticket_spam_trained,
t.last_reply_by_agent, t.ticket_spam_probability, th.thread_date, thr.thread_received,
t.ticket_status, t.ticket_due, th.thread_address_id, t.min_thread_id, a.address_address,
t.ticket_mask, t.ticket_time_worked as total_time_worked, ad.address_address as
requestor_address, ad.address_banned, q.queue_id, q.queue_name ,v_9.field_value as
g_3_custom_9 FROM thread th, address a, address ad, queue q, thread thr, ticket t LEFT
JOIN field_group_values v_9 ON (v_9.entity_index = IF ( v_9.entity_code = 'R',
thr.thread_address_id, t.ticket_id ) AND v_9.field_id = 9) WHERE 1 AND t.max_thread_id =
th.thread_id AND t.min_thread_id = thr.thread_id AND a.address_id = th.thread_address_id
AND ad.address_id = thr.thread_address_id AND q.queue_id = t.ticket_queue_id AND
t.ticket_id IN (172058,172036,172022,172012,171929,171387) GROUP BY t.ticket_id ORDER BY
thr.thread_received DESC
最佳答案
您在 from
子句中混合了 join
样式。您可以仅使用 join
而不使用 ,
来修复查询。
“问题”是 MySQL 在 5.0.12 中进行了更改以更加符合 ANSI 语法(您可以在 documentation 中阅读详细信息)。这改变了 from
子句中逗号的作用域规则。我是否提到过避免在 from
子句中使用逗号?使用显式连接始终是一个好主意。
快速修复方法是将逗号替换为交叉连接
。
关于mysql 查询在较新的 mysql 环境中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18775323/