1

次のような 2 つの MySQL テーブルがあります。

表A

 [name]   |   [id]
---------------------
 Shirts      1, 10, 16, 18
 Pants       14, 11
 Skirts      19, 13, 15

表B

 [id]   |   [s_id]
---------------------
 ABC         1
 AC          1
 DE          10 
 DEC         19
 ACD         16
 BCD         18
 BCO         18

ここで、特定の名前の ofからの一致idから sを取得する必要があります。TableBs_ididTableA

クエリは次のようになります。

 SELECT id 
   FROM TableB
  WHERE s_id IN ( SELECT id
                    FROM TableA
                   WHERE name = 'Shirts' )

1, 10, 16, 18したがって、サブクエリは(csv)を返します。しかし、これはサブクエリでこのように使用できないことを知っています。

何か案は?

4

2 に答える 2

2

これを試して:

SELECT b.id, b.s_id
FROM TableB b 
INNER JOIN TableA a ON FIND_IN_SET(b.s_id, REPLACE(a.id, ' ', ''))
WHERE a.name = 'Shirts';
于 2012-12-28T18:41:22.243 に答える
1

これを試してみてください。このクエリではテーブル全体のスキャンが必要になるため、テーブルが大きくないことを願っています。

SELECT id
FROM TableB
WHERE FIND_IN_SET(s_id, (SELECT id FROM TableA WHERE name = 'Shirts')) IS NOT NULL
于 2012-12-28T18:48:47.063 に答える