如何在同一张桌子上进行双重联接?
基本上,我想这样做:
1 - Sort all records in descending order by a order_date_last_revised column. 2 - Group those records by order_base_id column to eliminate duplicates. 3 - Match the id of those records and return all columns for them.
这是我的SQL,它不起作用:
SELECT * FROM sys_quote_master q1 LEFT JOIN sys_quote_master q2 ON q1.order_id = q2.order_id group by q2.order_base_id LEFT JOIN sys_quote_master q3 ON q2.order_id = q3.order_id WHERE order_base_id="010313-6063" order by q3.order_date_last_revised desc;
基本上,当我尝试执行它时得到了这个:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT JOIN sys_quote_master q2 ON q1.order_id = q2.order_id order by q3.order_dat' at line 4
您的group by
位置是否存在:它必须出现在表和where子句之后(如果有):
SELECT *
FROM sys_quote_master q1
LEFT JOIN sys_quote_master q2 ON q1.order_id = q2.order_id
LEFT JOIN sys_quote_master q3 ON q2.order_id = q3.order_id
WHERE order_base_id="010313-6063"
group by q2.order_base_id
order by q3.order_date_last_revised desc;
但是请注意,按当前分组方式将无效。您必须列出不是聚合列的所有列,才能按预期运行。
也许group by不是您想要的-考虑使用distinct
模仿重复项:
select distinct *
from ...
-- and remove group by clause
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句