簡體   English   中英

存儲過程錯誤:子查詢返回多於1行

[英]stored procedure error:Subquery returns more than 1 rows

我正在嘗試創建一個存儲過程,但給我一個錯誤:子查詢為下面的查詢返回多於1行。 可以使用游標完成此操作,但是還有其他方法可以在不使用游標的情況下直接在存儲過程中運行此查詢,因為我需要為多個表在存儲過程中添加這種類型的多個查詢。

查詢: -

UPDATE ipcc_patent_ipc_class
SET assignee_type = (
SELECT IF(ipcc_patent_master.assignee_type='$ipcc_config_param[0]',$ipcc_config_value[0],IF(ipcc_patent_master.assignee_type='$ipcc_config_param[1]',$ipcc_config_value[1],null))
FROM ipcc_patent_master
WHERE ipcc_patent_ipc_class.patent_id = patent_uid);

但是此查詢適用於多個字段:-

UPDATE ipcc_patent_ipc_class
SET geographies_id=(
  SELECT ipcc_geographies.geographies_uid
  FROM ipcc_patent_master,ipcc_geographies
  WHERE ipcc_patent_master.geographies = ipcc_geographies.geographies
  AND ipcc_patent_ipc_class.patent_id = ipcc_patent_master.patent_uid
),
jurisdictions_id =(
  SELECT ipcc_jurisdictions.jurisdisctions_uid
  FROM ipcc_patent_master,ipcc_jurisdictions
  WHERE ipcc_patent_master.jurisdictions = ipcc_jurisdictions.jurisdictions
  AND ipcc_patent_ipc_class.patent_id = ipcc_patent_master.patent_uid
),
country_code_id =(
  SELECT ipcc_country_code.country_code_uid
  FROM ipcc_patent_master,ipcc_country_code
  WHERE ipcc_patent_master.country_code= ipcc_country_code.country_code
  AND ipcc_patent_ipc_class.patent_id = ipcc_patent_master.patent_uid
); 

在子查詢中添加Limit子句。

在您的子查詢的WHERE子句中添加更多術語,以將其簡化為一條記錄,或者在同一子查詢中添加LIMIT子句。

我認為這里根本不需要子查詢。 您可以直接在UPDATE查詢中引用多個表:

http://dev.mysql.com/doc/refman/5.0/en/update.html

問題已解決...對於子查詢(SELECT語句),Patent_uid缺少別名,導致此錯誤。 輸入表名作為別名后,它在存儲過程中開始正常工作。

謝謝你們的幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM