私の問題は次のとおりです。変数にIDのリストを設定し、この変数をサブクエリで使用します。問題は、WorkBench(私のGUI)が次のエラーを返すことです: "複数の行を返す副問い合わせ"。それは私が思うものです。
私が間違っているところを教えてください。サブクエリ内の変数にリストを設定する - MYSQL
これは私のクエリです:
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);
事が私は「によってグループ」で封鎖されていますが、私はなぜ私はできない(またはそれはだ、で最初のグループの後でgroupdを行いたいです少なくとも私は方法を見つけることができませんでした)単一のWHERE句で要求を書きます。
事は、私が代わりに変数を使用しますが、私のサブクエリに直接リクエスト全体を置くことができることを知っている:
- それは私がDRY(この動作を必要に応じて別のリクエストでこのトリックを使用させることができます!コンセプト)
- 私はよく分からないが、サブクエリは私のループの各ターンで実行され、それが
非常に非効率的になりますので、私は2つの可能な方法を模索:私が使ってみましょう道をvarにリストするサブクエリでiableを使用する方法、または1つのクエリで2回「group by」を使用する方法です。
あらかじめお返事ありがとうございます(私の英語では申し訳ありませんが、これは母国語ではありません)。あなたが何か他のもののためにその変数を必要とする場合を除き
この種の問題は、貧しいデザインの症候性です。 – Strawberry
「デザインが悪い」ということをもう少し明示することができればいいと思います。 –
正規化を参照してください。 – Strawberry