recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment résoudre l'erreur « la sous-requête renvoie plus d'une ligne »

<p>J'ai une requête qui renvoie plusieurs lignes et une autre requête dans laquelle je souhaite définir la condition comme étant une valeur pour l'une de ces multiples lignes, donc fondamentalement, je veux que la sous-requête ressemble à ceci : </p> ; <pre class="brush:php;toolbar:false;">sélectionner * du tableau où id= (requête multiligne);</pre> <p>Où <code> La requête multi-lignes</code> renvoie plusieurs lignes. Donc, si les valeurs de ces lignes sont 1, 2, 3, alors je veux que l'identifiant soit défini sur 1 ou 2 ou 3. </p>
P粉235202573P粉235202573546 Il y a quelques jours606

répondre à tous(2)je répondrai

  • P粉310754094

    P粉3107540942023-08-22 13:21:55

    Vous pouvez utiliser in() :

    select * 
    from table
    where id in (多行查询)

    Ou utilisez le lien :

    select distinct t.* 
    from source_of_id_table s
    join table t on t.id = s.t_id
    where <source_of_id_table的条件>

    La connexion n'est jamais un pire choix en termes de performances et, selon la situation et la base de données que vous utilisez, elle peut offrir de meilleures performances.

    répondre
    0
  • P粉386318086

    P粉3863180862023-08-22 09:08:13

    = peut être utilisé lorsqu'une sous-requête ne renvoie qu'une seule valeur.

    Lorsqu'une sous-requête renvoie plusieurs valeurs, vous devez utiliser IN : 

    select * 
    from table
    where id IN (multiple row query);

    Par exemple :

    SELECT *
    FROM Students
    WHERE Marks = (SELECT MAX(Marks) FROM Students)   --子查询只返回一个值
    
    SELECT *
    FROM Students
    WHERE Marks IN 
          (SELECT Marks 
           FROM Students 
           ORDER BY Marks DESC
           LIMIT 10)                       --子查询返回10个值

    répondre
    0
  • Annulerrépondre