如何解决使用order by和左连接在一起的sql查询有什么问题?这是正确的方法吗?
SELECT ts.contact_id as contact_id,ts.contact_name as name,ts.is_contact_active as is_active,ts.created_at,ts.updated_at
FROM tb_summary ts
ORDER by created_at
LEFT JOIN (tcs.contact_address as address FROM tb_contacts tcs) ON tcs.contact_id = ts.contact_id
WHERE ts.business_owner_id = ? AND ts.is_contact_active = ?
此查询引发
ER_PARSE_ERROR:您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第2行“ LEFT JOIN tcs.Contact_address作为地址tcs.Contact_id FROM tb_Contacts tcs”附近使用
解决方法
您的语法不正确。查询仅包含一个from
子句,其中可能包含多个join
。 order by
子句放在末尾。
所以:
SELECT
ts.contact_id as contact_id,ts.contact_name as name,ts.is_contact_active as is_active,ts.created_at,ts.updated_at,tc.contact_address as address
FROM tb_summary ts
LEFT JOIN tb_contacts tc ON tc.contact_id = ts.contact_id
WHERE ts.business_owner_id = ? AND ts.is_contact_active = ?
ORDER by ts.created_at
,
SELECT
语句由一系列子句组成。您的查询包含四个子句:
-
SELECT
-
FROM
-
WHERE
-
ORDER BY
这些运算符必须按此顺序。
JOIN
是FROM
子句中的 operator 。因此,它的结构应该更像这样:
SELECT ts.contact_id as contact_id,ts.is_contact_active as is_active,ts.updated_at
FROM tb_summary ts LEFT JOIN
tcs.contact_address address tca
ON tca.contact_id = ts.contact_id
WHERE ts.business_owner_id = ? AND ts.is_contact_active = ?
ORDER by created_at
据我所知,查询仍然是荒谬的。 contact_address
表未使用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。