SQL Query删除表中的相关记录

时间:2017-05-26 23:43:17

标签: mysql sql database-design

我有一个简单的表格,其中包含NAME,PRICE,STATUS等基本销售信息。 对于每个客户互动,他们使用NAME和PRICE输入到表中。 如果该客户已取消该交易,则会添加另一条记录,其中包含NAME,负PRICE,以及​​STATUS =已取消。这是一个示例表

 
+------+--------+-----------+
| NAME | PRICE  |  STATUS   |
+------+--------+-----------+
| bob  |    100 |           |
| mary |    100 |           |
| mary |   -100 | cancelled |
| andy |    250 |           |
| mary |    250 |           |
+------+--------+-----------+

我想要做的是删除已取消的交易的正面和负面记录,以便生成的表格看起来像这样。

 
+------+--------+-----------+
| NAME | PRICE  |  STATUS   |
+------+--------+-----------+
| bob  |    100 |           |
| andy |    250 |           |
| mary |    250 |           |
+------+--------+-----------+

有关如何在SQL中执行此操作的任何建议吗?

1 个答案:

答案 0 :(得分:-1)

加入表格以匹配相关记录:

C:\intelFPGA\17.0\quartus\cusp\synthinclude\stlport\stdio.h:22:11: fatal error: '../include/stdio.h' file not found # include _STLP_NATIVE_C_HEADER(stdio.h)

联接查找具有相同名称的行,并且价格是相同的价格或价格的负数。 DELETE t1 FROM yourTable AS t1 JOIN yourTable AS t2 ON t1.name = t2.name AND t1.price IN (t2.price, -t2.price) WHERE t2.status = 'canceled' 子句将此限制为匹配已取消的行。

DEMO