当前位置:数据库 > MySQL >>

这个mysql语句怎么写

在一次sql查询中,要求取出9个父级分类(p_id,p_name)和每个父分类对应的12个子级分类, 怎么写,一条sql语句哦,我用的是子查询,但是貌似行不通 select * from `category` where p_id=0 or p_id in ( select id from `category` where p_id=0 order by is_recommend desc,listorder desc )
追问:选取p_id=0 和p_id=0的子级分类, 加p_id=0 or就是为了选取父分类,后面的子查询是为了,获取对应的子分类
答案:你不早说

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

基本上就这样
其他:你这语句 把下层结果套进去 就是 
select * from `category` 
where p_id=0 or p_id in (‘0’)
更何况 P_ID 和 ID 。。。。
不明白你要的是什么 举个数据例子 说一下你想取什么结果吧! select max(id) id,leixing from table1 
where leixing in (select leiid from table2 where leiname ='xxx')
group by leixing
order by 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步进行查询基本上是这样了,可以一试,也很好懂不过要注意临时表的用法,断了连接就没有的了

上一个:mysql外键问题。跪求易做图指教。。 Can't create table 'test.homework' (errno: 150)问题
下一个:使用xampp, mysql创建存储过程时,报错,大家帮我看看这是怎么回事啊。。(mysql是5.0以上版本的)

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,