【问题标题】:mysql query join/inner joinmysql查询连接/内连接
【发布时间】:2012-04-21 01:34:25
【问题描述】:

我的 mysql 中有两个表,我想根据两个表的组合查询来提取结果。我尝试加入以及内部加入,但没有成功

的结构

tableA 是

id   userid   topic

1     34       love
3     64       friendship
35    574      romance
32    253      games
95    633      football
54    26       cricket
648    63      music

tableB 是

id    location     username
34      Australia    krkrff
64      india        dieiei
574     pakistan     frkfrf
253     japan        frfffrk
633     india        ifirf
26      Australia    riiri
63      Australia    frffjrr

请注意,tableA 中的 userid 和 TableB 中的 id 相同。两者都反映了相同用户的数据。我想通过过滤 tableB 中的位置列来显示 tableA 数据。假设我想显示 tableB 的主题并且用户属于澳大利亚,那么它应该给出输出:love 蟋蟀 音乐

您可以在表 B 中看到 34,26 和 63 属于澳大利亚,所以输出是这样的。如果位置是印度,那么输出将是

友谊和足球。请告诉如何编写sql查询。

【问题讨论】:

    标签: mysql join left-join inner-join


    【解决方案1】:

    以下应选择您所描述的内容:

    select a.topic
    from tableA a
    join tableB b on b.id = a.userid
    where b.location = 'Australia' -- or whichever location you filter on
    

    相当于:

    select a.topic
    from tableA a
    join tableB b on b.id = a.userid and b.location = 'Australia'
    

    【讨论】:

    • @Paul Bellora,在单个 mysql 查询中可以使用多少个连接?
    【解决方案2】:
    SELECT a.topic, b.topic FROM tableA a, tableB b WHERE a.id = b.id AND b.location = 'Australia'
    

    【讨论】:

      【解决方案3】:

      您能否详细说明“tableA 用户 ID 和 TableB 中的 id 相同”的含义,因为它们可见不同,因此我们不能将它们用作键。

      不过,据我了解,您可能只想执行 JOIN,然后仅针对 TOPIC 执行 SELECT。

      所以,您的查询应该是:

      SELECT t1.topic from table1 t1 JOIN tableB t2 on t2.id = t1.id WHERE t2.location = 'Australia'
      

      【讨论】:

      • tableA 中的 userid 和 tableB 中的 id 的列名不同,但值相同。只需检查 tableA 用户 ID 值是否出现在 tableB id 列中,以便它们可以用作键
      【解决方案4】:

      试试这个:

      SELECT tableA.topic FROM tableA JOIN tableB
      ON tableA.userid = tableB.id
      WHERE tableB.location = 'Australia';
      

      【讨论】:

        猜你喜欢
        • 2020-06-06
        • 1970-01-01
        • 1970-01-01
        • 2013-01-18
        • 2019-05-05
        • 1970-01-01
        • 2021-08-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多