Mein Problem ist das Folgende, ich möchte eine Liste von ID in einer Variablen festlegen, dann verwenden Sie diese Variable in einer Unterabfrage. Das Problem ist, dass WorkBench (meine GUI) den folgenden Fehler zurückgibt: "Unterabfrage, die mehrere Zeilen zurückgibt". Das scheint mir das zu sein, was ich will.
Bitte erklären Sie mir, wo ich falsch liege.Legen Sie eine Liste in einer Variablen in Unterabfrage - MYSQL
Dies ist meine Frage:
set @listID := (select ID_VOIE as ID from voies
where ORIGINE = 'XXX'
group by CODE_INSEE, CODE_VOIE
having count(*) > 1);
select substring(v.CODE_INSEE,1,2), count(*) from voies v
where v.ID_VOIE in (@listID)
group by substring(vs.CODE_INSEE,1,2);
Die Sache ist ich mit der „Gruppe von“ gesperrt bin, möchte ich nach einer ersten Gruppe eine groupd tun durch, deshalb kann ich nicht (oder Zumindest habe ich keinen Weg gefunden) schreibe die Anfrage mit einer einzigen WHERE-Klausel.
Die Sache ist, ich weiß, dass ich die ganze Anfrage direkt in meiner Unterabfrage setzen kann stattdessen Variable verwenden, aber:
- Es kann ich diesen Trick in einem anderen Anfragen verwenden lassen, die dieses Verhalten erforderlich (DRY ! Konzept)
- ich bin nicht sicher, aber die Unterabfrage wird in jeder Runde meiner Schleife ausgeführt werden, und das wird sehr ineffizient
So suche ich zwei Möglichkeiten: eine Art und Weise, die ich benutzen ließ eine Liste in einer Var In einer Unterabfrage oder in einer Art, in der ich zweimal in einer einzigen Abfrage "gruppieren" verwenden kann.
Vielen Dank im Voraus für Ihre Antworten (oh und Entschuldigung für mein Englisch, das ist nicht meine Muttersprache).
Diese Art von Problem ist symptomatisch für schlechtes Design. – Strawberry
Es wäre schön, wenn Sie ein wenig expliziter über "schlechtes Design" sein könnten. –
Siehe Normalisierung. – Strawberry