mysql 查询在较新的 mysql 环境中不起作用

标签 mysql

这适用于 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/

相关文章:

mysql - 使用 MySQL for Excel - 数据库中的一个特定表将无法导入,所有其他表都工作正常

mysql - 为什么对 wp_postmeta 的引用这么慢?

mysql - 全团订购

mysql - 同一行的约束

mysql - SQL 多对多 - 非常简单

php - 如果另一个表 ID 匹配则更新一个表

php - 从单个数组创建多维数组

php - 为什么受影响的行数是错误的?

mysql - 如何从三个表中计数?

mysql - 仅在 PK 选择期间,MySQL 是否默认对 PK 字段进行排序?