这个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以上版本的)