超过1个sql查询的结果

时间:2013-12-05 07:06:12

标签: sql sqlite

我有sql查询

SELECT RV.duration, 
       P.expirytime 
FROM   rid_purchase_info_v64 AS P 
       INNER JOIN rid_video_asset_movievod AS RV 
               ON RV.rid = P.rid 
WHERE  RV.rid = 31041; 

我收到了结果

7166|1386308217

143|1386308217 为什么我得到2个结果而不是1个

2 个答案:

答案 0 :(得分:1)

据我了解,表rid_purchase_info_v64与rid_video_asset_movievod表存在一对多的关系。 RV中有多个与P相关的条目。许多开发人员将属性“删除”或“状态=禁用”隐藏不需要的行。

您需要做的是识别这样的属性并放入where语句。这是初学者非常普遍的问题。

答案 1 :(得分:1)

如果您只想显示1行,请尝试使用LIMIT,例如:

 SELECT RV.duration, 
   P.expirytime 
 FROM   rid_purchase_info_v64 AS P 
   INNER JOIN rid_video_asset_movievod AS RV 
           ON RV.rid = P.rid 
 WHERE RV.rid = 31041
 LIMIT 1

或者,如果您想获得最高值,可以使用聚合函数MAX():

 SELECT MAX(RV.duration),
   P.expirytime 
 FROM   rid_purchase_info_v64 AS P 
 INNER JOIN rid_video_asset_movievod AS RV 
           ON RV.rid = P.rid 
 WHERE RV.rid = 31041
 GROUP BY P.expirytime

或者对于最小值MIN():

 SELECT MIN(RV.duration),
   P.expirytime 
 FROM   rid_purchase_info_v64 AS P 
 INNER JOIN rid_video_asset_movievod AS RV 
           ON RV.rid = P.rid 
 WHERE RV.rid = 31041
 GROUP BY P.expirytime