Извлеките строки на основе ключей

#sql

Вопрос:

У меня есть следующая таблица:

 key1 key2 col3 col4 col5 value
A    B    C    D    F    good1
F    C    C    D    F    adsf
A    D    C    D    F    good2
N    B    C    D    F    afd
A    B    C    D    F    dsf
A    D    C    D    F    fads
 

Я пытаюсь извлечь значения из столбцов key1 и key2, где значение включает «хорошо». Используя затем, я хотел бы извлечь все строки из таблицы, которые включают эти ключи.

Ожидаемый результат таков:

 key1 key2 col3 col4 col5 value
A    B    C    D    F    good1
A    D    C    D    F    good2
A    B    C    D    F    dsf
A    D    C    D    F    fads
 

До сих пор у меня было:

 SELECT DISTINCT key1, key2
FROM my_table tb1
WHERE tb1.value LIKE '%good%'
 

с пандами python я бы сохранил результат вышесказанного и извлек все столбцы из my_table . Есть ли способ сделать это эффективно в SQL без необходимости создавать вторую таблицу?

Ответ №1:

Вы можете использовать exists для этого:

 select t.*
from my_table t
where exists (select 1
              from my_table t2
              where t2.value like '%good%' and
                    t2.key1 = t.key1 and
                    t2.key2 = t.key2 
             );