2016-02-20 4 views
0

У меня есть таблица с именем Text_Field, который состоит из столбца с именем ID,Sqlite выборка из таблицы

У меня есть еще одна таблица с именем Content, который состоит из таблицы с именем значения,

Я хочу, чтобы принести эти значения ID из таблицы Text_Field, которые присутствуют в столбце значений Контента и удовлетворяют указанному условию.

Я знаю, что может построить запрос, как этот

SELECT ID 
FROM Text_Field 
WHERE ID IN (
    SELECT value 
    FROM CONTENT 
    WHERE USER='CURRENT_USER') 

Моей единственной проблемой является то, что для некоторых сценариев таблица значения может содержать идентификатор внутри строки

Таким образом, внутренний запрос может вернуть что-то вроде

56789 
12334 
12348 
Rtf(833405) 

Теперь, если мой идентификатор 833405 он присутствует в столбце значение, но запрос IN возвратит ложь,

Я попытался

group_concat(value) 

Так что внутренний запрос возвращает одну строку, которая является строкой,

56789,12334,12348,Rtf(833405) 

Я хочу знать, что после GROUP_CONCAT я могу использовать что-то, как LIKE, чтобы удовлетворить свою потребность Или я могу сделать это другим способом?

ответ

1

Используйте exists вместо этого, с like:

SELECT t.ID 
FROM Text_Field t 
WHERE EXISTS (SELECT 1 
       FROM CONTENT c 
       WHERE c.USER = 'CURRENT_USER' AND 
        (c.value = t.id OR 
        c.value LIKE '%(' || t.id || ')%' 
        ) 
      ); 

Примечание:

+0

Может ли он использовать 'regexp' Гордон? –

+0

@Pokies. , , Если версия SQLite поддерживает его, то да. –

Смежные вопросы