4

mysql に 2 つのテーブルがあり、両方のテーブルのクエリを組み合わせて結果を抽出したいと考えています。内部結合と同様に結合を試みましたが、構造が成功しませんでした

テーブル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 のユーザー ID と TableB の ID は同じであることに注意してください。どちらも同じユーザーのデータを反映しています。tableB の場所の列をフィルタリングして、tableA のデータを表示したいと考えています。tableB のトピックを表示し、ユーザーがオーストラリアに属していると仮定すると、次のように出力されます:love cricket music

tableB で、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

「tableAユーザーIDとTableBIDは同じ」とは、キーとして使用できないように表示が異なるため、その意味を詳しく説明してください。

ただし、私が理解しているように、トピックに対してのみ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 に答える
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 に答える