SELECT TOP 20 [SellID],[SortID],[Title] FROM [T_Sell] WHERE title like '%%' AND SellID IN (SELECT TOP 20 [SellID] FROM (SELECT SellID FROM [T_Sell_Property] WHERE ValueString='黑色' AND LabelID=2) AS NONO ORDER BY SellID DESC) ORDER BY SellID DESC
万分感激
解决方案 »
- SQL server 2000中如何用Transact-SQL语句查看用户权限和角色啊?
- 晕死:检索“刘德华”,全文检索报错“查询子句只包含被忽略的词”
- SQL里如何用变量值作为表名创建表
- 奇怪,我的数据库可用空间始终为0,数据文件和日志文件不再自动增长
- 请教邹老大?
- MySQL导入到SQLServer2005中,汉字都变成了???
- 关于sql数据盗窃
- 关于合并查询记录的问题
- 关于在sql的select语句中,日期作为查询条件的问题?
- OLE DB 访问接口 'MSDASQL' 返回的数据与列 '[MSDASQL].psex' 所需的数据长度不匹配
- having count(autoid)>1 有没有替代方法?
- 关于求某表第N条记录的疑问?
可你给的这个方案不是优化.
SellID IN 里面的 top 20是我故意的。
目的是减少 in的条件我希望最好能抛弃这个IN换一个更高效的方法
select TOP 20 [SellID],[SortID],[Title]
FROM [T_Sell] as a ,
(SELECT TOP 20 SellID FROM [T_Sell_Property]
WHERE ValueString='黑色' AND LabelID=2 ORDER BY SellID DESC) as NONO
WHERE title like '%%'
AND a.SellID =NONO.SellID
ORDER BY SellID
FROM [T_Sell] as a inner join T_Sell_Property as b on a.SellID = b.SellID
WHERE b.ValueString='黑色' AND b.LabelID=2
ORDER BY a.SellID DESC
Select b.*
From (
Select Top 20 SellID
From T_Sell_Property
Where ValueString='黑色' AND LabelID=2
) a Left Join
(
Select SellID,SortID,Title
From T_Sell
Where title like '%%' ) b
On a.SellID = b.SellID
Order By b.SellID