私は2つのテーブルがあります。 A customers
テーブルとorders
テーブルです。 customers
テーブルには、今まで注文したことのある人のリストがあり、orders
テーブルにはこれまでに行われたすべての注文のリストがあります。これらのテーブルはcustomer.ID = orders.CustomerIDに接続されています。各顧客には固有のIDがあります。特定の日付以降に注文していないSQLの顧客データを削除してください
orders
表はまた、Date
の順番を示しています。特定の日付を指定して注文していないすべての顧客の行を削除したいと思います。
次のように私がこれまで持っているクエリは次のとおりです。
DELETE * FROM customers join orders on customers.id = orders.CustomerID WHERE orders.Date <= 'Date Input form Form';
はしかし、私は前と後の両方に注文した顧客が指定した日付が同様に削除されることを恐れ、と私はしないでくださいそれが起こることを望みます。
私が探しているロジックは次のようによりそうです。その後も
delete customers where the orders.date is !> than the given date
、このロジックは、指定した日付の前に、与えられた日付以降に注文した顧客を保護しますか?
これを達成するにはどうすればよいですか?
これは、指定された日付より前に注文した顧客を削除します。 –
はい、ただし、指定された日付の前にのみ注文した場合は、削除したいものです。 @JonathanVanDam – Tom
サブクエリを使用して各顧客のmax(orders.Date)を検索し、指定された日付よりも小さいもののみを削除します。 http://stackoverflow.com/questions/4471277/mysql-delete-from-with-subquery-as-condition –