sql二次使用查询结果

我想要做一个产品分类信息表,数据库有10分类,页面上要显示单个分类下最新更新的产品信息,能不以用一个sql语句写出来。下面是要达到的效果
分类一  分类一里面最新更新的一条商品信息
分类二  分类二里面最新更新的一条商品信息



笨的方法是select * from kind 是然后下面写10个查询语句select * from product where kindid=刚查出来的分为编号。

这处效果能不能用一条语句完成呢?

可以的,使用分类作为分组条件,取最新记录就行了
select t.分类,t.* from tableName t where t.id in(
select max(id) from tableName group by 分类 )
order by 分类

-----说明:如果表中记录有ID的且ID为递增的话可以采用以上语句,如果没有则采用如下语句
select t.分类,t.* from tableName t inner join
(select 分类,max(更新时间) update_date from tableName group by 分类 ) b
on (a.分类=b.分类 and a.更新时间=b.update_date)
----以上语句如果更新时间不是date类型(可能是varchar)则请先将其转换为时间类型,否则结果可能不正确。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-11
select * from product where kindid in(select kindid from kind )
第2个回答  2013-09-11
楼主 不太明白你的意思
select * from product where kindid in('','','',''……)

这样行不
也许你是第一个表的数据 然后查询在第一个表里面的编号的数据
select * from product where kindid in(select 编号 from kind
)追问

但是每种分类只要一种商品啊

追答

还是不明白你的意思 你可以描述清楚点 把表的一些数据贴出来

追问

像电子产品,电脑:笔记本电脑,台式机,平板电脑
要显示的内容是
1、笔记本电脑   最新更新的笔记本电脑名称及型号
2、台式机    最新更新的台式机名称及型号
3、平板电脑  最新更新的平板电脑的名称及型号

sql二次使用查询结果
可以的,使用分类作为分组条件,取最新记录就行了 select t.分类,t.* from tableName t where t.id in(select max(id) from tableName group by 分类 )order by 分类 ---说明:如果表中记录有ID的且ID为递增的话可以采用以上语句,如果没有则采用如下语句 select t.分类,t.* from tab...

为什么同样的sql语句,两次执行结果却不同
一般是由于排序造成的,在后面加上order by 试试

SQL如何实现对同一字段两次查询结果(记录的行数相同)插入一张表格。_百...
其实,加个union all 就可以实现2次查询结果在一个里面, 然后直接insert就可以了

sql 根据查询结果进行二次查询
Where A.[合同号] = 'a' and B.[住合同GUID] = A.[合同GUID]直接这样查询就行,得出的结果就是你要的数据

为什么sql查询执行第二次后就会提示数据库中已存在名为“xx”的对象...
你的脚本不是可以重复执行的,可重复执行的需要先判断对象存在不存在,不存在新建,存在则不做任何操作。问题只能说明你第一次已经创建了对象,而且执行了数据库保存

请教一个sql查询问题,可能要用到2次count和2次groupby
这个不难啊,可以直接把这两个结果连起来啊,把查询的结果作为一个临时视图 select * from (select 会计期间 temp1time,count(*)from voucher group by 会计期间 order by 会计期间 )temp1 ,(select v.会计期间 temp2time,count(*)from voucher v, details d where v.凭证号=d.凭证号 group by...

数据库查询出错,同样select代码点2次,出现2个不同的结果
like和not都是运算符,两者不得混在一起使用,情况就跟一同时乘以除以二(1 * \/ 2)一样,系统搞不清楚该如何运算它。建议修改SQL查询语句如下:Select Count(*) as cnts From table1 Where InStr(Comment,'$')=0 or IsNull(InStr(Comment,'$'));

sql中 如何横着合并对同一个表的两次查询结果?
设两个变量t1、t2,赋初值:t1=""t2=""每当有查询结果时:t1=t1+"姓名 年龄 "t2=t2+姓名+" "+年龄+" "最后输出:?t1 ? t2 但是如果想将查询结果按你给出的形式创建一个表,保存数据,是不可能的,数据表里不能有列名相同的情况。实在需要可另想办法。

为什么同一句sql执行两次,两次的结果的排列顺序竟然不相同!
设置数据库默认的排序规则,按逐渐升序或按逐渐降序

PL\/SQL 中怎样返回某字符串在另一字符串中第2次出现的索引
select instr(substr('abcdefgabcdefg',instr('abcdefgabcdefg','c')+1,length('abcdefgabcdefg')-instr('abcdefgabcdefg','c')+1),'c')+instr('abcdefgabcdefg','c') from dual;返回是10,第二个c就出现在第10位,没有问题啊?

相似回答