mysql WHERE IN van OR naar AND

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Daniel van Seggelen

Daniel van Seggelen

29/05/2023 18:10:10
Quote Anchor link
Hallo

Ik gebruik nu dus een WHERE IN

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT id WHERE test IN ('4','5','6');


Probleem is dat ze allemaal voor moeten komen dus i.p.v een OR een AND maken.
Wat is de makkelijste manier om dit te doen?
 
PHP hulp

PHP hulp

19/03/2024 07:18:14
 
Adoptive Solution

Adoptive Solution

29/05/2023 18:22:10
Quote Anchor link
Kijk eens of dit in de buurt komt.

https://mariadb.com/kb/en/between-and/

Dan krijg je zoiets.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
SET @id = 3;
SELECT @id BETWEEN 4 AND 6;


Of

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM tabelnaam WHERE id BETWEEN 4 AND 6;
 
Ivo P

Ivo P

30/05/2023 14:57:11
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT id WHERE test IN ('4','5','6');


is gelijk aan
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT id WHERE test = '4'  or test = '5' or test = '6';


Daar kún je ipv OR natuurlijk AND van maken, en dat zal hij alle IDs geven van de records waarbij de kolom Test gelijktijdig de waarde 4 5 en 6 heeft.

Dat zijn over het algemeen erg weinig records (nul). Iets is niet gelijktijdig 4 en ook 5, laat staan dat het ook nog 6 is.

Dus misschien iets beter beschrijven wat je wilt.
 
Willem vp

Willem vp

04/06/2023 20:20:13
Quote Anchor link
Ivo P op 30/05/2023 14:57:11:
Dat zijn over het algemeen erg weinig records (nul). Iets is niet gelijktijdig 4 en ook 5, laat staan dat het ook nog 6 is.

Als je gewend bent met Yoda-condities te werken zou je nog wel een toepassing kunnen bedenken. Stel dat je de records wilt hebben waar veld1 en veld2 allebei de waarde 0 hebben. In plaats van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT *
  FROM tabel
 WHERE 0 = veld1
   AND 0 = veld2

zou je dan ook dit kunnen doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT *
  FROM tabel
 WHERE 0 INALL (veld1, veld2)

Ik heb de operator in dit voorbeeld voor de duidelijkheid de naam INALL gegeven. En ik moet zeggen dat ik er zelf ook weinig nuttige toepassingen voor kan verzinnen, maar dit zou dus zo'n situatie kunnen zijn waarin het handig is als IN als AND werkt. Ik kan hooguit bedenken dat het een boel tikwerk scheelt als je van 20 velden wilt testen of ze allemaal dezelfde waarde hebben.
Gewijzigd op 04/06/2023 20:21:00 door Willem vp
 
Ad Fundum

Ad Fundum

05/06/2023 16:53:21
Quote Anchor link
Zodra iemand weet wat Daniel bedoelt met 'ze allemaal' weten we ook het antwoord.

Naar aanleiding van het leuke, maar nog niet bestaande INALL een paar werkende voorbeelden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT 0 = 1 = 2;          -- resultaat 0
SELECT 2 = 1 = 0;          -- resultaat 1
SELECT 0 = 1 = 2 = 3;      -- resultaat 0
SELECT 3 = 2 = 1 = 0;      -- resultaat 1
SELECT (0 = 1) = (2 = 3);  -- resultaat 1

MySQL blijft verrassen.

Wat nog het meest in de buurt komt van een echt antwoord is de ALL operator.
https://dev.mysql.com/doc/refman/8.0/en/all-subqueries.html
Gewijzigd op 05/06/2023 17:08:58 door Ad Fundum
 
Ozzie PHP

Ozzie PHP

05/06/2023 17:08:31
Quote Anchor link
>> Zodra iemand weet wat Daniel bedoelt met 'ze allemaal' weten we ook het antwoord.

Wat we inmiddels toch wel zouden moeten weten is dat Daniel een vraag stelt, en daarna nooit meer wat laat horen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.