首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL 3表连接

MySQL 3表连接
EN

Stack Overflow用户
提问于 2010-09-23 00:37:36
回答 1查看 651关注 0票数 0

我有数据来根据他们的位置来获取列表。在位置映射表中映射位置。结构基本上看起来像这样:

代码语言:javascript
复制
listings
  -id
  -title
  etc.

locations
  -id
  -location_name
  etc. 

location_map
  -listing_id
  -location_id

当我想要根据它们的位置列出列表时,我使用以下SQL。基本上,我有位置id,然后我就可以找到该位置的列表。我使用DISTINCT,这样我就不会得到重复的位置结果。

这是可行的,但我想知道这是不是一个好方法,因为我需要使用DISTINCT。有没有更好、更受欢迎的方式来做这样的事情?

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-23 02:51:30

你可以试一试

代码语言:javascript
复制
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 )

这消除了连接到位置。

我不确定明显的问题是什么。如果你已经确定了一个位置,为什么会有重复的位置呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3771546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档