尝试这样
SELECT i.invoice_date inv,
i.invoice_id,
i.total_amount,
oi.invoice_date oi_inv,
oi.offline_invoice_number,
oi.invoice_amount
FROM ci_invoices i
LEFT JOIN ci_offline_invoice oi
ON oi.customer_id = i.customer_id
WHERE i.customer_id = 9
ORDER BY i.invoice_date
LIMIT 10
**编辑**
他们是不一样的东西。
考虑这些查询:
SELECT i.invoice_date inv,
i.invoice_id,
i.total_amount,
oi.invoice_date oi_inv,
oi.offline_invoice_number,
oi.invoice_amount
FROM ci_invoices i
LEFT JOIN ci_offline_invoice oi
ON oi.customer_id = i.customer_id
WHERE i.customer_id = 9
ORDER BY i.invoice_date
LIMIT 10
和
SELECT i.invoice_date inv,
i.invoice_id,
i.total_amount,
oi.invoice_date oi_inv,
oi.offline_invoice_number,
oi.invoice_amount
FROM ci_invoices i
LEFT JOIN ci_offline_invoice oi
ON oi.customer_id = 9
WHERE i.customer_id = 9
ORDER BY i.invoice_date
LIMIT 10
首先将返回ci_invoices及其线路,如果有的话, CUSTOMER_ID = 9。
第二个将返回所有ci_invoices,但只有customer_id 9将 有任何与其关联的行。
在INNER JOINs上它们是可以互换的,优化器会随意重新排列它们。
在外部连接上,它们不一定是可以互换的,这取决于它们依赖于连接的哪一侧。
请只项,提供的表格中的详细信息。目前还不清楚,您想如何订购结果,仅限日期,还是日期时间。 – Alexander
因为你加入customerid = 9它会从'oi'表中为'i'表中的每个条目返回1行' – Milen
@MilenPavlov我刚刚解决问题,是否有任何方法根据最高日期?因为它可能在'我'表或'oi'表中? –