我正在使用以下查询来获取给定ListingID和UserID的RegionID。但是我的结果包括我没有想到但仍属于用户的ListingID。
SET @ListingID = 71;
SET @UserID = 160;
SELECT
LIST_REGION_LISTING_ID,
LIST_REGION_REGION_ID,
REGION_NICK_NAME
FROM
listing_region
INNER JOIN region ON REGION_ID = LIST_REGION_REGION_ID AND REGION_USER_ID = @UserID
WHERE LIST_REGION_REGION_ID IN (SELECT LIST_REGION_REGION_ID FROM listing_region WHERE LIST_REGION_LISTING_ID = @ListingID);
为什么我得到在查询中未请求的ListingID 58?
答案 0 :(得分:0)
您将获得LIST_REGION_LISTING_ID 58,因为在子查询中,您将获得所有具有LIST_REGION_LISTING_ID = 71的LIST_REGION_REGION_ID。在结果中,您可以看到tou获得LIST_REGION_REGION_ID 11和12号。
所以您的WHERE子句看起来像这样
WHERE LIST_REGION_REGION_ID IN (11,12)
,其中包括LIST_REGION_LISTING_ID = 58的行
您可以在不使用子查询的情况下进行查询:
SET @ListingID = 71;
SET @UserID = 160;
SELECT
LIST_REGION_LISTING_ID,
LIST_REGION_REGION_ID,
REGION_NICK_NAME
FROM
listing_region
INNER JOIN region ON REGION_ID = LIST_REGION_REGION_ID AND REGION_USER_ID = @UserID
WHERE listing_region.LIST_REGION_LISTING_ID = @ListingID;