4

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

表A是

id   userid   topic

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

表B是

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 cricket music

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

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

4

4 回答 4

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'
于 2012-04-08T04:19:16.347 回答
1
SELECT a.topic, b.topic FROM tableA a, tableB b WHERE a.id = b.id AND b.location = 'Australia'
于 2012-04-08T04:20:01.427 回答
1

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

但是,据我了解,您可能只想对主题进行 JOIN 和 SELECT 操作。

因此,您的查询应该是:

SELECT t1.topic from table1 t1 JOIN tableB t2 on t2.id = t1.id WHERE t2.location = 'Australia'
于 2012-04-08T04:22:15.063 回答
1

试试这个:

SELECT tableA.topic FROM tableA JOIN tableB
ON tableA.userid = tableB.id
WHERE tableB.location = 'Australia';
于 2012-04-08T04:24:35.073 回答