Comment résoudre l'erreur « la sous-requête renvoie plus d'une ligne »
P粉235202573
P粉235202573 2023-08-21 17:36:57
0
2
536
<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粉235202573
P粉235202573

répondre à tous(2)
P粉310754094

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.

P粉386318086

= 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个值
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal