我希望从两个表中获得每组的最低值
表格低于
Table 1 Table 2
| GPN | Amt | | GPN | Date |
| A | 10 | | A | 2016-09-10 |
| A | 15 | | A | 2016-09-18 |
| A | 20 | | B | 2016-09-10 |
| A | 25 | | B | 2016-09-11 |
| A | 30 | | B | 2016-09-12 |
| B | 20 | | C | 2016-10-12 |
| B | 40 | | C | 2016-10-13 |
| B | 60 | | C | 2016-10-14 |
| B | 80 | | D | 2016-09-10 |
| B | 100 | | D | 2016-10-13 |
| C | 3 |
| C | 6 |
| C | 9 |
| C | 12 |
| C | 15 |
| D | 7 |
| D | 10 |
| D | 13 |
| D | 16 |
| D | 19 |
| D | 22 |
我多么想要那个价值
例如
日期= 2016-09-10,
那有多少GPN,所以我必须得到每个GPN的最低Amt
所以结果将是这样的
Result
| GPN | Amt |
| A | 10 |
| B | 20 |
| D | 7 |
我尝试过使用 ASC LIMIT 1 ,所以很明显它只显示一个原始但但我不知道该怎么做。
我用php循环做了但是我在寻找是否有可能在mysql查询中这样才会真棒。
答案 0 :(得分:1)
内部联接和分组
select table1.GPN, min(table2.Amt)
from table1
inner join table2 on table1.GPN= table2.GPN
where date(table2.date ) = str_to_date('2016-09-10', '%Y-%m-%d')
group by table1.GPN
答案 1 :(得分:0)
这是一个经典的aggregate function查询。
SELECT T1.GPN, MIN(Amt) FROM Table1 T1 INNER JOIN Table2 T2 ON T1.GPN = T2.GPN GROUP BY T1.GPN WHERE T2.Date = ?