sql 查询结果唯一问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 16:01:05
请教!!
有2个表
TABLE 1
(1_title,1_time)
TABLE 2
(2_title,2_time)

其中1_title=2_title 且1_title是唯一的2_title不是唯一的

TABLE 1中可能有
1_title='AA'
1_title='BB'
1_title='CC'
TABLE 2中可能
2_title='AA'
2_title='AA'
2_title='AA'
2_title='CC'

我的想法是查询如果2_title存在等于1_title的情况,那么得到2_time的最大值跟相对的1_title且所有的1_title按照2_time的顺序排序
如果不存在2_title等于1_title,则按照1_time 排序

例子
TABLE 1
1_TITLE 1_TIME
AAAAA 1
BBBBB 2
CCCCC 3
DDDDD 4

TABLE 2
2_TITLE 2_TIME
aaaaa 11
aaaaa 55
aaaaa 77
bbbbb 33
bbbbb 22
ddddd 44

结果是
AAAAA 1 aaaaa 77
DDDDD 4 ddddd 44
BBBBB 2 bbbbb 33
CCCCC 3

我的SQL也很菜 试着写了一下 当作练习 可花了不少时间

=================

SELECT A.a1, A.b1, B.a2, B.b2
FROM t1 AS A
LEFT JOIN
(SELECT t2.a2, MAX(t2.b2) AS b2
FROM t2
GROUP BY a2) AS B
ON A.a1 = B.a2
ORDER BY B.b2 DESC, A.b1

=================

你只说排序 给的结果里2_time是反序 1_time你没说按什么序排哦

表名字段名跟你的对应的 你改一下

select A.1_title, A.1_time, B.2_title, max(B.2_time) as gg from TABLE1 as A left join TABLE2 as B on A.1_title=B.2_title group by concat(A.1_title,B.2_title) order by gg desc;

应该可以的,楼主可试下;
楼上的也行吧,不过mysql好像不支持嵌套;