2

このクエリを実行しようとすると、「エラー:#1242-サブクエリが複数の行を返します」というメッセージが表示されました。

SELECT id FROM postcodes WHERE pcd LIKE (SELECT CONCAT(pcd,' %') FROM towns WHERE id IN (31898,12828,15771,7604))

このクエリについて何か提案はありますか?

4

3 に答える 3

3

JOININ次のように、述語の代わりに2つのテーブル。

SELECT p.id 
FROM postcodes p
INNER JOIN towns t ON p.pcd LIKE CONCAT(t.pcd,' %')
WHERE t.id IN (31898,12828,15771,7604);
于 2013-02-04T06:51:30.403 に答える
1

このクエリを確認してください:

SELECT CONCAT(pcd,' %') FROM towns WHERE id IN (31898,12828,15771,7604)

たぶん、結果は複数の行になります。

または、サブクエリの結果を制限することもできます。

SELECT id FROM postcodes WHERE pcd LIKE (SELECT CONCAT(pcd,' %') FROM towns WHERE id IN (31898,12828,15771,7604) LIMIT 1)
于 2013-02-04T06:46:19.040 に答える
0

サブクエリを1行に制限する必要があります。結果を1行に制限するためにいくつかのフィルターを追加するか、サブクエリに追加することLIMIT 1でうまくいきます。

于 2013-02-04T06:46:45.500 に答える