我有表 A 和 B。
表A有这样的数据
| id | status | made at | ... |
| 1 | new |14-04-14 | ... |
| 2 | fixed |14-08-12 | ... |
| 3 | fixed |14-03-15 | ... |
| ... | ... | .. | ... |
在表 B 中,
| id | A_id | changes |changed at| ... |
| 1 | 1 | new | 14-04-14 | ... |
| 2 | 2 | new | 14-08-12 | ... |
| 3 | 2 | fixed | 14-08-28 | ... |
| 4 | 3 | new | 14-03-15 | ... |
| 5 | 3 | fixed | 14-05-11 | ... |
| 6 | 3 | fixed | 14-05-14 | ... |
| .. | .. | .. | .. | ... |
我想要的结果是选择在表 A 中具有固定状态和在表 B 中固定更改的内容,不重复
。
如果它有相同的更改
,例如 B 中的 5 和 6,我将只选择最新数据的更改。
所以结果看起来像...
| id | A_id | made at | status | changes | changed at | ... |
| 2 | 2 | 14-08-12 | fixed | fixed | 14-08-28 | ... |
| 3 | 3 | 14-03-15 | fixed | fixed | 14-05-14 | ... |
我尝试了 select * from A, B where (A.status='fixed') and (A.id=B.A_id) and (B.changes='fixed')
但仍然重复导致改变。
如何正确查询?
最佳答案
试试这个查询
SELECT tab.* FROM(SELECT A.*,B.A_id,B.chnages,B.changed at
FROM A LEFT JOIN B ON A.id=B.A_id
WHERE A.status='fixed' AND B.changes ='fixed'
ORDER BY B.changes_at DESC ) as tab GROUP BY tab.id
关于mysql - 从两个连接表中选择具有最新日期且不重复的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32965685/