簡體   English   中英

從一個表中刪除外鍵上的字段小於MySQL中的值的表

[英]Deleting from one table where a field on a foreign key is less than value in MySQL

我有一個名為“ order”的數據庫表,該表通過外鍵引用了另一個名為“ delivery”的表。 我需要刪除在特定日期之前修改的交貨,但是直到刪除引用它們的訂單后才能刪除。

因此,我需要刪除在特定日期之前修改交貨的訂單。 我在MySQL中編寫了以下查詢:

DELETE FROM `order`,`delivery` WHERE order.delivery_id = delivery.id AND delivery.modifiedOn < '2016-2-28 23:59:59'

但我收到一個SQL錯誤:

1064-您的SQL語法有誤; 檢查與您的MySQL服務器版本相對應的手冊,以在附近使用正確的語法:“ WHERE order.delivery_id = delivery.id AND delivery.modifiedOn <'2016-'

我之前沒有做過這種查詢,我懷疑我需要在某個地方使用JOIN,但不確定在哪里-任何建議都將不勝感激。

這是您要查找的語法:

DELETE o, d
    FROM `order` o JOIN
         `delivery` d
         ON o.delivery_id = d.id 
    WHERE d.modifiedOn < '2016-02-29';

筆記:

  • 不要命名表格order 它是MySQL中的保留字和SQL中的關鍵字。 Orders呢?
  • 學習即使在非SELECT查詢中也要使用正確的JOIN語法。
  • 表別名使查詢更易於編寫和閱讀。
  • 不需要包含HH:MM:SS進行時間比較。
  • 您是否知道2016年2月實際上有29天?
  • 最后,級聯刪除外鍵引用將簡化處理。

暫無
暫無

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

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