2012-03-12 16 views
2

私は2つのテーブルを持っています。私は両方のテーブルの件名の列が一致するテーブル1からUIDを取得したいと思います。MYSQLあるテーブルからデータを選択するには、そのテーブルの列の値が別のテーブルの列の値と一致する場合のみです。

Table 1    

UID SubjectA   
1  Cows   
2  Chickens  
3  Mice   
4  Rabbits   
5  Cows   

Table 2 

Name SubjectB 
A  Cows 
B  Cows 
C  Cows 
D  Cows 
E  Mice 

期待される結果*

は、UIDを取得:1、3、5

私はかなり参加し、労働組合を理解していません。どちらも2つのテーブルを結合しているようです。これを行う正しい方法は何ですか?

答えて

4

これを行うには、いくつかの方法が

まず...ありますが、私はexistsを使用することをお勧めしたい:

SELECT 
    UID 
FROM 
    Table1 
WHERE EXISTS (
    SELECT 1 
    FROM Table2 
    WHERE SubjectB = SubjectA 
) 

それとも、あなたはjoindistinctを使用することができます。

SELECT DISTINCT 
    UID 
FROM 
    Table1 JOIN 
    Table2 ON SubjectB = SubjectA 

最後に、in

SELECT 
    UID 
FROM 
    Table1 
WHERE SubjectA IN (
    SELECT SubjectB 
    FROM Table2 
) 
+0

迅速な対応に感謝します! 「SELECT 1」の行が何を意味するのか尋ねてもいいですか?異なる番号が2または3と表示された場合、機能はどのように変化しますか? – tjones

+0

Hoozah !!!できます!ありがとう@マイケル! – tjones

+0

@tjones 'exists'は、行が返された場合にtrueを返します。返される行にどの値が含まれているかは関係ありませんので、値をハードコーディングすると最適化され、SQLは実際のテーブルからの値。どのような値がハードコードされているかは関係ありません。「2」、「3」、「potato」のいずれかになります... –

関連する問題