2011-08-19 16 views
0

したがって、2つの別個のテーブルがあります。最初の表には、idを持つ広告グループが多数あります。 2番目の表には、各広告のad_group IDを含む列を持つ一連の広告があります。 ad_group_idは、広告グループテーブルの広告グループのIDにすぎません。そのため、ad_group_idが103,104,105,107,117117、および120のすべての広告を選択しようとしています。別のテーブルから値を選択する

したがって、次のクエリを試しました。

SELECT * FROM ads WHERE ad_group_id LIKE '%103%' OR ad_group_id LIKE '%104%' 
OR ad_group_id LIKE '%105%' OR ad_group_id LIKE '%107%' OR ad_group_id LIKE '%117%' OR ad_group_id LIKE '%118%' OR ad_group_id LIKE '%120%'; 

これまでのクエリの動作は?はい

私のクエリは効率的でしたか?いいえ!

以前のMySQLクエリをより効率的に実行する方法を知りたいと思います。

EDIT:

that  103 
is   105 
special  104 
please  103 

理にかなっている希望を:

AD GROUP - table 1 
id name 
100 Tony 
100 David 
103 James 
104 Ann 
105 Jon 
150 Sara 

AD - table 2 
keyword ad_group_id 
that  103 
one   100 
is   105 
special  104 
no   100 
please  103 

だから私はで終わる必要があります。

EDIT 2:

次のコードは、同じ結果を与えると短いですが、私は選択する必要が複数の値があるとき、私はこれをやって想像することはできません。

SELECT * FROM ads WHERE ad_group_id IN (103,104,105,107,117,118,120); 
+0

あなたの質問は完全には明確ではありません。あなたはこれらのテーブルのデータのいくつかの例とあなたが探している結果を加えてください。 – Oded

+0

なぜ「好き」ですか?なぜ=ではない? –

+0

私はSQLに慣れていない、何らかの理由で、私が必要とする特定の価値を持たない限り、私は常にLIKEを使用します。 – ATMathew

答えて

1

id1、id2、id3などのようにad_group_idを保存すると分かります。 の場合は、この関係は多対多であり、 の2つの列ad_id、ad_group_idを持つ追加の表を作成する方が効果的です。しかし、それはあなたのデータの量に依存します。

関連する問題