假设我有一张表A
两个字段ID date1 2009-10-10 11:11:11
2 2009-10-10 11:11:13
3 2009-10-10 11:11:15
4 2009-10-10 11:11:17还有一张表B
三个字段ID A_id date1 1 2009-10-10 11:11:12
2 1 2009-10-10 11:11:14
3 2 2009-10-10 11:11:16现在我每往表A添加一条数据,date按照添加时间录入
每当我针对表A的一条数据回复下,就存入表B,时间按录入时间,也就是表B可能有针对A某条数据的数据,也可能没有现在我想查询出来这样的结果
显示a的ID根据在表B时间倒序顺序排列,如果在表b没有数据,就按照A自己的时间算4 //最后时间为本身的11:11:17
2 //最后时间为表B的11:11:16
3 //最后时间为本身的11:11:15
1 //最后时间为表B的最新记录11:11:14
表达不是很清晰,希望能帮我
问题补充:可以理解成论坛那样的排列,最新回复了放在最上面,没有回复按时间排列,但是我不能改动数据库
两个字段ID date1 2009-10-10 11:11:11
2 2009-10-10 11:11:13
3 2009-10-10 11:11:15
4 2009-10-10 11:11:17还有一张表B
三个字段ID A_id date1 1 2009-10-10 11:11:12
2 1 2009-10-10 11:11:14
3 2 2009-10-10 11:11:16现在我每往表A添加一条数据,date按照添加时间录入
每当我针对表A的一条数据回复下,就存入表B,时间按录入时间,也就是表B可能有针对A某条数据的数据,也可能没有现在我想查询出来这样的结果
显示a的ID根据在表B时间倒序顺序排列,如果在表b没有数据,就按照A自己的时间算4 //最后时间为本身的11:11:17
2 //最后时间为表B的11:11:16
3 //最后时间为本身的11:11:15
1 //最后时间为表B的最新记录11:11:14
表达不是很清晰,希望能帮我
问题补充:可以理解成论坛那样的排列,最新回复了放在最上面,没有回复按时间排列,但是我不能改动数据库
id,
isnull(b.`date`,a.`date`) as `date`
from
a
left join
b
on
a.id=b.a_id
and
not exists(select 1 from b t where t.a_id=b.a_id and t.`date`>b.`date`)
order by
`date` desc
+------+---------------------+
| id | date |
+------+---------------------+
| 1 | 2009-10-10 11:11:11 |
| 2 | 2009-10-10 11:11:13 |
| 3 | 2009-10-10 11:11:15 |
| 4 | 2009-10-10 11:11:17 |
+------+---------------------+
4 rows in set (0.00 sec)mysql> select * from b;
+------+------+---------------------+
| id | A_id | date |
+------+------+---------------------+
| 1 | 1 | 2009-10-10 11:11:12 |
| 2 | 1 | 2009-10-10 11:11:14 |
| 3 | 2 | 2009-10-10 11:11:16 |
+------+------+---------------------+
3 rows in set (0.00 sec)mysql> select a.id,max(COALESCE(b.date,a.date))
-> from a left join b on a.id=b.a_id
-> group by a.id
-> order by 2 desc;
+------+------------------------------+
| id | max(COALESCE(b.date,a.date)) |
+------+------------------------------+
| 4 | 2009-10-10 11:11:17 |
| 2 | 2009-10-10 11:11:16 |
| 3 | 2009-10-10 11:11:15 |
| 1 | 2009-10-10 11:11:14 |
+------+------------------------------+
4 rows in set (0.00 sec)mysql>
mysql> select a.id,max(COALESCE(b.date,a.date))
-> from a left join b on a.id=b.a_id
-> group by a.id
-> order by 2 desc;
这个么? 谢谢你了 初学