簡體   English   中英

有條件地從 memsql 表中刪除最后一條記錄/行?

[英]Delete last record/row from memsql table on condition?

我想從 serial_num 匹配的表中刪除最后一行。 我們可以按交易日期訂購。 我編寫了下面的過程,但仍然遇到語法錯誤。 任何想法?

CREATE OR REPLACE PROCEDURE `motor_dba`.`kp_field_track_delete_last_motor_history`(serial_num_in varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL) RETURNS void AS
BEGIN
  DELETE FROM motor_field_track_transaction_history
  WHERE serial_num=serial_num_in
  ORDER BY transaction_date  DESC
  LIMIT 1;
END;

我得到的錯誤是:

SQL 錯誤 [1064] [42000]: function motor_dba中的編譯錯誤。 第 5 行附近的kp_field_track_delete_last_motor_history :您的 SQL 語法有錯誤; 檢查與您的 MySQL 服務器版本相對應的手冊,以獲取在“ORDER BY transaction_date DESC LIMIT 1”附近使用的正確語法

我認為您不能使用 order by 限制。

您可以使用如下示例:

CREATE OR REPLACE PROCEDURE `motor_dba`.`kp_field_track_delete_last_motor_history`(serial_num_in varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL) RETURNS void AS
BEGIN
  DELETE FROM motor_field_track_transaction_history
  WHERE transaction_date IN
       (Select * from motor_field_track_transaction_history
        where serial_num=serial_num_in
        ORDER BY transaction_date  DESC
        LIMIT 1);
END;

讓我知道這是否有效。

暫無
暫無

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

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