我有一个查询,它使用一些左连接来取回数据。困境是我想要LIMIT
和ORDER BY
来自左连接之一的结果,因此限制了返回的总行数。MYSQL限制左连接查询
我试图订购,并限制该表是table4
我的查询:
SELECT SQL_CALC_FOUND_ROWS e.meta_1, a.requestid, b.clientid, c.job_description, d.forename
FROM quotations_request AS a
LEFT JOIN table1 AS b ON (a.assigned_to = b.userid)
LEFT JOIN table2 AS c ON (a.job_costing = c.jobid)
LEFT JOIN table3 AS d ON (a.clientid = d.clientid)
LEFT JOIN table4 AS e ON (e.quotationid = a.requestid)
WHERE a.archived = '0' AND (e.meta_1 = LCASE('requested'))
我曾尝试:
SELECT SQL_CALC_FOUND_ROWS statuss.meta_1, a.requestid, b.clientid, c.job_description, d.forename,
FROM quotations_request AS a
LEFT JOIN table1 AS b ON (a.assigned_to = b.userid)
LEFT JOIN table2 AS c ON (a.job_costing = c.jobid)
LEFT JOIN table3 AS d ON (a.clientid = d.clientid)
LEFT JOIN (Select meta_1 from table4 where quotationid = a.requestid ORDER BY uploaded_date DESC LIMIT 0, 1)
as statuss ON (statuss.quotationid = a.requestid)
WHERE a.archived = '0' AND (statuss.meta_1 = LCASE('requested'))
结果:
尝试上述后,我得到了一个错误说a.requestid
是在WHERE子句中未知(最后左连接)
并在子查询中使用LIMIT似乎是合理的......那么接下来发生了什么? –
@TimBiegeleisen对不起,我应该添加(更新的问题),然后我结束了错误说“a.requestid”是未知的字段。请记住,a.requestid来自第二行的主表 –
第一段中描述的困境与阻止您的查询运行的错误无关。给定第一个查询中基于e.meta_l的谓词,LEFT JOIN是非常低效的冗余,应该是内连接。 – symcbean