2013-06-18 11 views
6

Jak mogę to zrobić?SQL Podobnie jak w przypadku podkwerendy

select * from item where item_name like '%' || (select equipment_type from equipment_type group by equipment_type) || '%' 

Wewnętrzna kwerendy sub zwraca listę ciągów takich jak „The” „badania” „inny” i chcę, aby zaznaczyć wszystkie pozycje z tabeli poz gdzie nazwa_pozycji jest podobna do kwerendy sub zwracać wartości. Muszę mieć dzikie karty.

Czy istnieje alternatywa, w której można używać symboli wieloznacznych, ale zamiast tego użyć polecenia IN sql?

+0

Don” Czy masz ID, aby to zrobić? – TechBytes

+0

@ TechBytes Co masz na myśli? –

+0

@ TechBytes i konkretnie stwierdził, że mam listę ciągów, które chcę porównać item_name do. –

Odpowiedz

11

można użyć INNER JOIN:

SELECT I.* 
FROM item I 
INNER JOIN (SELECT equipment_type 
      FROM equipment_type 
      GROUP BY equipment_type) E 
    ON I.item_name LIKE '%' || E.equipment_type || '%' 
+0

ahhh miło miło, spróbuję tego i dam znać jak najszybciej. ty –

3

Jeśli nie chcesz się martwić o duplikatów i nie obchodzi których jeden mecze, a następnie przełączyć się na używanie exists:

select i.* 
from item i 
where exists (select 1 
       from equipment_type 
       where i.item_name like '%'||equipment_type||'%' 
      ) 
+0

oohhhh ten wygląda dobrze! Spróbuję i dam ci znać jak najszybciej –

Powiązane problemy