我有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个
答案 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