Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][MySQL]Pobieranie odpowiednich rekordów z tabeli SQL, select * from tabela where IN (1,2,3)
casperii
post 31.08.2022, 23:36:24
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


Witam panowie , głupi problem , przejdę do rzeczy.
Jest tabela która załóżmy ma kolumnę blabla a w niej wartości np. :

2,3
2,7
2,10,20
5,10,15
5
2
9

chciałbym pobrać wszystkie rekordy gdzie występuje w kolumnie blabla wartość "2"

  1. SELECT * FROM tabela WHERE blabla IN ('2')


powyższe zapytanie zwraca mi tylko przedostatni rekord gdzie w kolumnie blabla mam tylko wartość 2

oczywiście można by się jeszcze pokusić o poniższe zapytanie:

  1. SELECT * FROM tabela WHERE blabla LIKE '%2%'


ale właśnie znowu pojawia się kolejny problem co w sytuacji gdy będzie wartość 122, 22, 222 itd , będzie chwytać mi ten rekord chociaż nie powinien.
Panowie jakaś podpowiedź ?


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
trueblue
post 1.09.2022, 06:46:15
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  1. SELECT * FROM tabela WHERE kol LIKE '2,%' OR kol LIKE '%,2,%' OR kol LIKE '%,2'


--------------------
Go to the top of the page
+Quote Post
nospor
post 1.09.2022, 08:08:57
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Brakuje jeszcze
OR kol = '2'
wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
trueblue
post 1.09.2022, 09:21:22
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


nospor, racja.

Tak myślę, że ze względu na słabe użycie indeksu w przypadku LIKE (chyba tylko LIKE 'xxx%' - czyli tam gdzie fraza jest na początku, działa jako tako), to można całość uprościć do:

  1. SELECT * FROM tabela WHERE CONCAT(',',kol,',') LIKE '%,2,%'


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:46