请大家帮我看看这条mysql语句该怎么写呢?

来源:百度知道 编辑:UC知道 时间:2024/05/17 04:39:38
table1
id leixing
1 a
2 b
3 a
4 a
5 c
6 b
==============
table2
leiid leiname
a xxx
b yyy
c xxx
===============
以上分别有两个表table1和table2,我现在想实现的是,对于table1,每个leixing只查询id最大的那一条,并且该leixing字段在table2中对应的是leiid字段,要求它的leiname为xxx值,最后出来的结果按照id的降序排列,请大家帮我看看这条mysql语句该怎么写呢?

select id,leixing from table1 where leixing in (select leiid from table2 where leiname=’xxx’) group by leixing order by id desc
我写的那条总是出错啊

如果照这个例子,我的结果实际应该就是:
5 c
4 a
====================
你们的语句看起来都是对的啊,不知道是不是MYSQL版本不同啊,我的是MySQL 4.0.21-nt-log,不知道你们的测试环境是什么,我搜索了一下,好象要4.1版本以上的才支持where in 这样的语句吧?

你不早说

select max(id) id,leixing from table1
where leixing in (select leiid from table2 where leiname ='xxx')
group by leixing
order by id desc

请问我那里限制 a,b值啦???你执行过我的语句吗????

你看不懂 table1 a,table2 b 这样写???

你在我sql 语句里面有看到 'a' 'b'这样的吗?
限于固定的字符串 也应该是带单引号的才对.

select a.id,a.leixing,b.leiname from table1 a,table2 b
where
a.leixing = b.leiid and
a.id in (select max(id) from table1 group by leixing)
order by a.iD desc

基本上就这样

应楼主要求,试试不用where in...老实说,我没有用过mysql也很疑惑

where in为什么不能用,楼主你可以一试,行就最好~我是通过创建临

时表来查的,方法如下

CREATE TEMPORARY TABLE tb_tmp SELECT max(id) from table1 group by leixing; --第一步,创建临时表

select a.id ,b.leiname from tb_tmp a,table2 b where a.leixing=b.leiid order by id desc;

--第2步进行查询基本上是这样了,可以一试,也很好懂不过要注意临时表的用法,断了连接就没有的了

select