1

我有两个这样的 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

现在我需要从来自任​​何给定名称的匹配中获取ids 。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 回答