【发布时间】:2020-05-07 08:18:23
【问题描述】:
我有 2 张桌子 companies 和 invoices
我想选择所有具有最新发票价格的公司。
我似乎没有让它工作。
这是我尝试过的:
SELECT *
FROM companies H INNER JOIN
invoices V
ON H.company_id = V.BC_ID
WHERE V.ISCOMMISSIE = 0 AND
V.DATE = (SELECT MAX(v2.DATE) FROM invoices v2 WHERE v2.BC_ID = V.BC_ID AND v2.ISCOMMISSIE = 0);
但查询加载时间很长,我不知道为什么。 结构如下:
公司
company_id | company_name |
1 | company 1 |
2 | company 2 |
发票
invoice_id | BC_ID | DATE | ISCOMMISSIE | price |
1 | 2 | 2020-01-01 | 0 | 340,40 |
2 | 1 | 2020-01-11 | 0 | 240,40 |
3 | 1 | 2020-01-08 | 0 | 250,30 |
4 | 2 | 2020-01-18 | 0 | 150,30 |
5 | 2 | 2020-01-19 | 1 | 150,30 |
BC_ID 与company_id 相同,ISCOMMISSIE 应为 0。
我想选择最近的日期。
有人知道如何做到这一点并尽可能快地进行查询吗?
http://sqlfiddle.com/#!9/2fc3a/1
【问题讨论】:
-
添加一些样本表数据,同时指定预期的结果。
-
指定 MySQL 版本。是否允许横向连接?
-
@Akina 5.7.28 是版本