SQL多表联查不重复

来源:百度知道 编辑:UC知道 时间:2024/06/25 04:37:09
select top 150 info.info_id,info.showname,info.now_time,info.sortid,info.typeid,info.typeid_2,corporation.qymc from info,corporation where info.type='卖' and corporation.id=info.gsid and info.showname like '%搜索关键字%' order by corporation.flag desc,info.Info_ID desc

corporation.id 结果不重复.
完成再给50.谢谢高手们.
一楼的方法我早就用过了.
出现这个提示.我是SQL 2008.
如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中。
====================================================================
info是产品信息表,corporation企业资料表.如果一个企业同时发布了几个信息,在搜索时候会出现一个企业的信息占了一整页,现在想过滤掉只显示最新的一条.
====================================================================
弓gong你的查不出任何东西来.

如果info_id越高代表信息越新的话,可以再添加一个约束
select top 150 info.info_id,info.showname,info.now_time,info.sortid,info.typeid,info.typeid_2,corporation.qymc from info,corporation where info.type='卖' and corporation.id=info.gsid and info.showname like '%搜索关键字%' and info.info_id=(select max(info.info_id) from info) order by corporation.flag desc,info.Info_ID desc

用distinct

select distinct top 150 info.info_id,info.showname,info.now_time,info.sortid,info.typeid,info.typeid_2,corporation.qymc from info,corporation where info.type='卖' and corporation.id=info.gsid and info.showname like '%搜索关键字%' order by corporation.flag desc,info.Info_ID desc

鄙视楼主,问题不说清
假设info表中有个字段info_time是产品发布的时间,你在你的select再加上一个最后的时间(informix可以直接max(info_time)不知道sql行不行)就会只显示最新一条,大概意思就是这,不知你看懂没。
之后就是
select distinct top 150 max(info_time) info.info_id,info.showname,info.now_time,info.sortid,info.typeid,info.typeid_2,corporation.qymc from info,corporati