mysql報錯:SQLSTATE[21000]: Cardinality violation: 1242 Subquery returns more than 1 row
錯誤的意思是指子查詢結果多於一行。
#以這個sql語句為例
select * from table1 where table1.colums=(select columns from table2);
1)如果寫入重複,去掉重複資料。在寫入資料時,可以使用邏輯判斷(PHP)或外鍵(MySQL)來防止重複寫入資料。
(我實際開發中遇到的就是資料重複寫入的情況,在資料庫查到有相同的資料兩條,這不符原本的原本的業務需求)
2)在子查詢條件語句加limit 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);
執行耗時 : 0.009 sec傳送時間 : 0.002 sec總耗時 : 0.012 sec1 queries executed, 0 success, 1 errors, 0 warnings
查詢:SELECT t.id, DATE_FORMAT( t.statisTime, ' %Y-%m-%d %H:%i:%s' ) statisTime, (SELECT `id` FROM t_truck_info WHERE id = t.plateId...
# 錯誤代碼:1242Subquery returns more than 1
錯誤代碼:1242Subquery returns more than 1 row
錯誤原因
#在撰寫查詢SQL語句時,其中有一個有記號進行查詢時,其中有一個有記號個欄位是從另一張表裡取得
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
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錯誤Subquery returns more than 1 row怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!