我在SQLite中有2个表A和B
答
Name|Badge
----------
ABC |X
XYZ |Y
B:
ListCode |Badges
--------------------
V |'X','Y','Z'
我想做这样的事情:
SELECT * FROM A WHERE BADGE IN (SELECT BADGES FROM B WHERE LISTCODE = 'V');
问题是SELECT IN似乎与另一个表中的文字csv不同。 我怎样才能做到这一点 ?
答案 0 :(得分:0)
这里故事的寓意是不像你一直存储的那样存储CSV数据。此答案假定您实际存储未加引号的 CSV数据,即:
X,Y,Z
话虽如此,您可以使用以下查询解决此问题:
SELECT A.*
FROM A
INNER JOIN B
ON A.BADGE = B.BADGES OR
B.BADGES LIKE A.BADGE || ',%' OR
B.BADGES LIKE '%,' || A.BADGE || ',%' OR
B.BADGES LIKE '%,' || A.BADGE
WHERE
B.BADGES IS NOT NULL
以下是上述查询的演示。它在MySQL中,因为Rextester不支持SQLite,但逻辑和数据是相同的。