1

SQL2つの部分で機能するクエリを実行しようとしています。

まず、10個のIDのリストを返すクエリがあります。しかし、次に、これらの10個のIDのそれぞれに句があるSELECTステートメントが必要です。WHERE

これは可能ですか?

私は試した:

    SELECT * FROM tablenameWHERE id= (SELECT id FROM table_of_ids WHERE 
    tableid='1a177de1-3f25c9b7910b' OR 
    tableid='64faecca-133af807a65a' OR
... up to 10 Ids)

ただし、サブクエリが複数の行を返すことを示すエラーが返されます。

table_of_idsのtableid列とid列は異なる値であることに注意してください。

誰かがこれを達成する方法を知っていますか?私は途方に暮れているようです。

重要な場合は、mySQLとPHPを使用しています。

乾杯、ブレット

4

6 に答える 6

3

あまり最適化されていないクエリですが、=の代わりにINを使用できます。

 SELECT * FROM tablename WHERE id IN (SELECT id FROM table_of_ids WHERE 
    tableid='1a177de1-3f25c9b7910b' OR 
    tableid='64faecca-133af807a65a' OR
... up to 10 Ids)
于 2011-06-12T12:32:58.973 に答える
2

in()に変更します

WHERE id IN (SELECT id ...)
于 2011-06-12T12:33:32.117 に答える
0

=INキーワードに置き換えます。

select * from sometable where key in (subselect that returns one column)
于 2011-06-12T12:32:55.483 に答える
0

できるようです。

SELECT * 
FROM tablename
  INNER JOIN table_of_ids ON table_of_ids.id = tablename.id
WHERE table_of_ids.tableid IN (
  '1a177de1-3f25c9b7910b',
  '64faecca-133af807a65a',
... )
于 2011-06-12T12:33:49.783 に答える
0

「=」演算子は使用せず、「IN」演算子を使用してください。例については、このチュートリアルを参照してください。

于 2011-06-12T12:34:49.073 に答える
0

INキーワードを使用します。

SELECT * FROM user WHERE Id IN(SELECT userId FROM table).

Idは最初のテーブルの主キーであり、userIdはcozの2番目のテーブルの外部キーです。

于 2011-06-12T12:35:14.493 に答える