Heim  >  Fragen und Antworten  >  Hauptteil

So beheben Sie den Fehler „Unterabfrage gibt mehr als eine Zeile zurück“.

<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粉235202573P粉235202573425 Tage vor471

Antworte allen(2)Ich werde antworten

  • P粉310754094

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

    您可以使用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的条件>

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

    Antwort
    0
  • P粉386318086

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

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

    当子查询返回多个值时,您需要使用 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个值

    Antwort
    0
  • StornierenAntwort