[SQL] Element pas dans le IN

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par dorian53, 23 Février 2010.

  1. dorian53
    dorian53 WRInaute passionné
    Inscrit:
    10 Avril 2005
    Messages:
    1 909
    J'aime reçus:
    1
    Bonjour,

    En 1 seule requête, comment trouver l'id de la table qui n'est pas dans un tableau IN entrée ?

    Exemple.

    Code:
    SELECT *  FROM table WHERE id IN (1, 2, 3, 4, 5);
    Si 3 n'existe pas dans la base je veux le savoir.
    En revanche, je ne veux pas récupérer tous les éléments de la table 6,7,8,9,10..

    Merci
     
  2. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 593
    J'aime reçus:
    0
    Avec postgresql (et probalement d'autres, vu que ce serait du SQL standard):

    select * from (values (1),(2),(3)) x(y) where x.y not in (select id from table);

    La version "longue" qui marche avec mysql:

    select * from (select 1 as y union select 2 union select 3) x where x.y not in (select id from table);

    Il y a peut-être plus court, mais je n'ai pas trouvé.

    Jacques.
     
  3. dorian53
    dorian53 WRInaute passionné
    Inscrit:
    10 Avril 2005
    Messages:
    1 909
    J'aime reçus:
    1
    J'ai tenté ça sous MySQL en suivant à la lettre ta syntaxe mais sans succès. As-tu une idée ?

    Code:
    SELECT * FROM (values (1), (2), (3)) x(y) WHERE x.y NOT IN (SELECT `use_id` from user)
    C'est OK pour la deuxième forme qui m'intéresse malheureusement moins.

    Merci
     
  4. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 593
    J'aime reçus:
    0
    Ben non, comme je disais, j'ai cherché, et je n'ai rien trouvé. Mais à part le fait que c'est plus long, quel est le problème avec la deuxième syntaxe?

    L'autre option consiste à utiliser une table temporaire:
    create temporary table tmpxxx (id integer); insert into tmpxxx values (1),(2),(3); select * from tmpxxx where id not in (select id from table)

    Jacques.
     
  5. dorian53
    dorian53 WRInaute passionné
    Inscrit:
    10 Avril 2005
    Messages:
    1 909
    J'aime reçus:
    1
    Merci ça va le faire.

    Je me demandais juste s'il n'y avait pas une autre façon d'écrire
    Code:
    select 1 as y union select 2 union select 3
    En supprimant les "union", en fournissant une liste à virgule ou autre.
    Ca semble lourd à l'oeil et niveau performance.
     
Chargement...
Similar Threads - [SQL] Element Forum Date
[sql] clé étrangaire Développement d'un site Web ou d'une appli mobile 9 Mai 2014
[SQL] Changement d'etat d'une table au bout de x jours Développement d'un site Web ou d'une appli mobile 26 Avril 2012
[SQL] Meme requete qui ne donne pas le meme résultat Développement d'un site Web ou d'une appli mobile 12 Avril 2012
[SQL] Recherche dans une base de données Développement d'un site Web ou d'une appli mobile 7 Juin 2011
[SQL] une somme un peu spéciale... Développement d'un site Web ou d'une appli mobile 1 Avril 2011
[SQL] Stocker nombre à virgules Développement d'un site Web ou d'une appli mobile 21 Octobre 2010
WordPress Suppression élément avec Css Demandes d'avis et de conseils sur vos sites 16 Août 2020
Fil d'Ariane : nom de l'élément sans objet, c'est grave ? Crawl et indexation Google, sitemaps 22 Octobre 2019
Search Console Texte illisible et éléments cliquables trop rapprochés Débuter en référencement 7 Juillet 2019
nofollow sur les éléments de menu : impact référencement Demandes d'avis et de conseils sur vos sites 27 Novembre 2018