mysql查询join / inner join

时间:2012-04-08 04:14:55

标签: mysql join left-join inner-join

我的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相同.both反映相同用户的数据。我想通过过滤tableB中的location列来显示tableA数据。假设我想显示tableB的主题并且用户属于澳大利亚,那么它应该给出输出:love 蟋蟀 音乐

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

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

4 个答案:

答案 0 :(得分:8)

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

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'

答案 1 :(得分:1)

SELECT a.topic, b.topic FROM tableA a, tableB b WHERE a.id = b.id AND b.location = 'Australia'

答案 2 :(得分:1)

请你详细说明你的意思“tableA userid和TableB id是相同的”,因为它们是不同的,因此我们不能将它们用作键。

据我所知,你很想做一个JOIN,然后只为TOPIC做一个SELECT。

所以,你的查询应该是:

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

答案 3 :(得分:1)

试试这个:

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