mysql エラー: SQLSTATE[21000]: カーディナリティ違反: 1242 サブクエリは複数の行を返します
このエラーは、サブクエリの結果が複数の行であることを意味します。
この SQL ステートメントを例として取り上げます
select * from table1 where table1.colums=(select columns from table2);
1) 「Repeat」と書かれている場合は重複データを削除してください。データの書き込み時に、論理判断 (PHP) または外部キー (MySQL) を使用して、データの繰り返し書き込みを防ぐことができます。
(実際の開発で遭遇したのは、データの書き込みが繰り返される状況でした。データベース内に同一のデータが 2 つあり、本来のビジネス要件を満たしていませんでした)
2) 追記サブクエリの条件文に 1 を制限し、条件を満たすものを見つけます
select * from table1 where table1.colums=(select columns from table2 limit 1);
3) サブクエリの前に any キーワードを追加します
select * from table1 where table1.colums=any(select columns from table2);
1 クエリが実行されました、0 成功、1 エラー、0 警告
クエリ: SELECT t.id, DATE_FORMAT( t.statisTime, ' %Y-% m-%d %H:%i:%s' ) statusTime, (SELECT `id` FROM t_truck_info WHERE id = t.plateId...
エラー コード: 1242サブクエリは 1 行以上を返します
実行時間: 0.009 秒 送信時間: 0.002 秒 合計時間: 0.012 秒
クエリ SQL ステートメントを作成するときに、フィールドが別のフィールドから取得されるtable
select t.id,(select num from t_user_info where id = stuNo) as amount from t_stu_info t left join t_user_info t0 on t0.id = t.stuNo
クエリは num が複数のデータであることを示しており、外側のクエリの結果では num が 1 つのデータである必要があります
select t.id,(select sum(num) from t_user_info where id = stuNo) as amount from t_stu_info t left join t_user_info t0 on t0.id = t.stuNo
以上がmysql エラーを解決する方法 サブクエリが複数の行を返すの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。