我有数据来根据他们的位置来获取列表。在位置映射表中映射位置。结构基本上看起来像这样:
listings
-id
-title
etc.
locations
-id
-location_name
etc.
location_map
-listing_id
-location_id当我想要根据它们的位置列出列表时,我使用以下SQL。基本上,我有位置id,然后我就可以找到该位置的列表。我使用DISTINCT,这样我就不会得到重复的位置结果。
这是可行的,但我想知道这是不是一个好方法,因为我需要使用DISTINCT。有没有更好、更受欢迎的方式来做这样的事情?
SELECT DISTINCT LS.title, LS.id, LS.url, LS.description
FROM listings LS
JOIN location_map MAP ON LS.id = MAP.listing_id
JOIN locations LOC ON LOC.id = MAP.location_id
WHERE LOC.id = 123
ORDER BY LS.title;发布于 2010-09-23 02:51:30
你可以试一试
SELECT LS.title, LS.id, LS.url, LS.description
FROM listings LS
WHERE
LS.id IN (
SELECT LM.listing_id
FROM location_map LM
WHERE LM.location_id = 123 )这消除了连接到位置。
我不确定明显的问题是什么。如果你已经确定了一个位置,为什么会有重复的位置呢?
https://stackoverflow.com/questions/3771546
复制相似问题