2
SELECT * ,
  (SELECT ZoneName 
   FROM zone_message_master 
   WHERE ZoneID = zoneid) 'ZoneName' 
FROM zone_master 
WHERE ZoneID=zoneid;

これはストアド プロシージャで実行されているクエリであり、エラーが発生しています

サブクエリが複数の行を返す

ここで私が間違ったことを誰か教えてもらえますか?

4

3 に答える 3

2

私がここで間違ったことは何ですか?

あなたが得たエラーはかなり明白です。サブクエリは正確に1行を返す必要があります。を使用して、行数を制限できますORDER BY ... LIMIT 1

どうすれば修正できますか?

そのためのサブクエリは必要ありませんでしたJOIN。代わりに、2つのテーブルを直接使用します。

SELECT z.ZoneId, zm.ZoneName
FROM zone_message_master zm
INNER JOIN zone_master z ON zm.ZoneId = z.ZoneId
于 2012-10-11T07:32:20.427 に答える
1

That means you have more than one entry in zone_message_master for your zoneid. This query will be more correct:

SELECT zm.* , zmm.ZoneName 
FROM zone_master zm
JOIN zone_message_master zmm ON zm.ZoneID=zmm.ZoneID
WHERE zm.ZoneID=zoneid;
于 2012-10-11T07:35:52.727 に答える
0

問題はおそらく、表示されたエラー メッセージと同じくらい明確です。サブクエリをだまして 1 行だけを返すようにすることはできますが、そうではありません。私が見ているように、あなたの意図は、テーブルzone_message_masterが一意のZoneID値を持つべきだということです。正しくするには、列に一意のインデックスを作成する必要がありzone_message_master.ZoneIDます。もちろん、これにはそのテーブルのクリーニングが必要ですが、最終的には正しく動作することを確認できます。

于 2012-10-11T07:38:47.443 に答える