Używam SQL za pośrednictwem narzędzia API, które obsługuje tylko podstawowy SQL, a nie żadne specjalne funkcje SQL obsługiwane przez SQL Server / Oracle / MySQL itp.
Mam SQL, który zwraca dane takie jak:
Czy jest możliwe wykonanie tego zapytania SQL jako zapytania podrzędnego i ściągnięcia wyniku, który wyglądałby następująco:
Jeśli mam col_2 = 'str2' AND col_3 = 'act'
, otrzymam jeden wiersz z pary zielonych rzędów.
Ale w moim wyniku chcę, aby wiersz z zielonej pary miał col_2 = 'str_1'.
Wiem, że to dziwne, ale chcę zobaczyć, czy to możliwe. Nie mogłem wymyślić żadnego sposobu, aby to zrobić. Próbowałem umieścić SQL, który pobiera pierwszy wynik w SELECT t1.col_1, t1.col_2, t1.col_3 FROM (<SQL_1>) t1 WHERE...
i jego wariantach, ale nie mogłem zbliżyć się do oczekiwanego rozwiązania.
Pary zielonych wierszy zawsze będą miały ten sam ciąg w kol_1.
2 odpowiedzi
Podejrzewam, że exists
robi to, co chcesz. To jest standardowy sql, który obsługuje wszystkie relacyjne bazy danych, o których myślę:
select t.*
from mytable t
where
col2 = 'str_1'
and exists (
select 1
from mytable t1
where t1.col1 = t.col1 and t1.col2 = 'str_2' and t1.col3 = 'act'
)
Komentarze są na miejscu: nie wysyłaj zdjęć, faksów ani TELEKSÓW swoich danych. Opublikuj coś, co można wykonać w bazie danych. Skorzystaj z nowoczesnej technologii, takiej jak DB-Fiddle, i podziel się swoim problemem.
Jeśli chodzi o twoje pytanie:
wygląda na to, że chcesz wybrać określone grupy / zestawy danych za pomocą filtru COL_3 = 'act'
, a następnie zwrócić rekordy z tych grup / zestawów, które mają COL_2 = 'str_1'
.
Jest to łatwe w przypadku standardowego SQL:
WITH selector
(col_1, col_4)
as (SELECT
col_1, col_4
FROM
data
WHERE col_3 = 'act')
select
d.col_1
, d.col_2
, d.col_3
, d.col_4
from
data d
inner join selector s
on (d.col_1, d.col_4)
= (s.col_1, s.col_4)
and d.col_2 = 'str_1'
;
Wypróbuj tutaj.
Podobne pytania
Nowe pytania
sql
Structured Query Language (SQL) to język służący do wykonywania zapytań w bazach danych. Pytania powinny zawierać przykłady kodu, strukturę tabeli, przykładowe dane i znacznik używanej implementacji DBMS (np. MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 itp.). Jeśli Twoje pytanie dotyczy wyłącznie konkretnego DBMS (używa określonych rozszerzeń / funkcji), użyj zamiast tego tagu tego DBMS. Odpowiedzi na pytania oznaczone tagiem SQL powinny używać standardu SQL ISO / IEC.