带有文字值的SQLite查询

时间:2017-09-17 04:24:09

标签: php sql sqlite in-subquery

我在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不同。 我怎样才能做到这一点 ?

1 个答案:

答案 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,但逻辑和数据是相同的。

Demo