So beheben Sie den Fehler „Unterabfrage gibt mehr als eine Zeile zurück'.
P粉235202573
P粉235202573 2023-08-21 17:36:57
0
2
506
<p>Ich habe eine Abfrage, die mehrere Zeilen zurückgibt, und eine andere Abfrage, bei der ich die Bedingung so festlegen möchte, dass sie ein Wert für eine dieser mehreren Zeilen ist. Daher möchte ich, dass die Unterabfrage grundsätzlich so aussieht: </p> ; <pre class="brush:php;toolbar:false;">select * vom Tisch wobei id= (mehrzeilige Abfrage);</pre> <p>Wobei <code>Mehrzeilenabfrage</code> Wenn also die Werte dieser Zeilen 1, 2, 3 sind, dann möchte ich, dass die ID auf 1 oder 2 oder 3 gesetzt wird. </p>
P粉235202573
P粉235202573

Antworte allen(2)
P粉310754094

您可以使用in()

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

或者使用连接:

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

连接在性能方面从不是一个更糟糕的选择,并且根据具体情况和您使用的数据库,可能会提供更好的性能。

P粉386318086

= 可以用于子查询返回只有一个值的情况。

当子查询返回多个值时,您需要使用 IN

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

例如:

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个值
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage