gpt4 book ai didi

mysql - 从表中删除

转载 作者:行者123 更新时间:2023-11-28 23:57:27 24 4
gpt4 key购买 nike

我有一个表格,最初包含以下详细信息

+-------+--------------+------------+-------+
| T_KEY | T_DATE | T_TEN | T_MEM |
+-------+--------------+------------+-------+
| 1 | 0000-00-00 | a | 0 |
| 2 | 0000-00-00 | b | 0 |
| 3 | 0000-00-00 | c | 0 |
| 4 | 0000-00-00 | d | 0 |
| 5 | 0000-00-00 | e | 0 |
| 6 | 0000-00-00 | f | 0 |
+-------+--------------+------------+-------+

插入后,表格如下所示

+-------+--------------+-----------+--------+
| T_KEY | T_DATE | T_TEN | T_MEM |
+-------+--------------+-----------+--------+
| 1 | 0000-00-00 | a | 0 |
| 2 | 0000-00-00 | b | 0 |
| 3 | 0000-00-00 | c | 0 |
| 4 | 0000-00-00 | d | 0 |
| 5 | 0000-00-00 | e | 0 |
| 6 | 0000-00-00 | f | 0 |
| 7 | 2015-01-01 | a | 1 |
| 8 | 2015-01-01 | b | 3 |
| 9 | 2015-01-01 | c | 5 |
| 10 | 2015-01-02 | a | 5 |
| 11 | 2015-01-02 | b | 8 |
| 12 | 2015-01-02 | c | 1 |
+-------+--------------+-----------+--------+

在插入操作期间,对于 T_TEN=a,b,c,已为 T_DATE 和 T_MEM 字段插入非零值。在插入操作之后,我想运行一个清理操作(删除查询),它应该识别所有的 T_TEN,每个 T_TEN 都有一行数据
T_DATE='0000-00-00' 和 T_MEM = 0

T_DATE="'0000-00-00' 以外的任何值"

T_MEM = "任何非零值"

一旦确定,它应该删除包含该特定 T_TEN 的 T_DATE='0000-00-00' 和 T_MEM = 0 的行。

在上面的示例中,在插入 T_TEN=a 之后,更新后的表中有 3 个“a”条目

+-------+--------------+-----------+--------+
| T_KEY | T_DATE | T_TEN | T_MEM |
+-------+--------------+-----------+--------+
| 1 | 0000-00-00 | a | 0 |
| 7 | 2015-01-02 | a | 1 |
| 10 | 2015-01-02 | a | 5 |

我想去掉 T_KEY=1 的行作为 T_TEN=a,现在字段 T_DATE 和 T_MEM 都有零值和非零值。

同样,对于 T_TEN=b & c,我想删除 T_DATE='0000-00-00' 和 T_MEM = 0 的行,因为它们在插入后的这些字段中有一个非零条目。

要求的输出

+-------+-------------+-------------+-------+
| T_KEY | T_DATE | T_TEN | T_MEM |
+-------+-------------+-------------+-------+
| 4 | 0000-00-00 | d | 0 |
| 5 | 0000-00-00 | e | 0 |
| 6 | 0000-00-00 | f | 0 |
| 7 | 2015-01-01 | a | 1 |
| 8 | 2015-01-01 | b | 3 |
| 9 | 2015-01-01 | c | 5 |
| 10 | 2015-01-02 | a | 5 |
| 11 | 2015-01-02 | b | 8 |
| 12 | 2015-01-02 | c | 1 |
+-------+-------------+-------------+-------+

我正在使用的 INSERT SQL 是

INSERT INTO 
databse_2.th_sc(T_DATE,T_TEN,T_MEM)
SELECT
ms1.M_DATE,
ms1.M_TEN,
CASE
WHEN SUM(ms1.MEM_US) BETWEEN 1 AND 3 THEN 1
WHEN SUM(ms1.MEM_US) BETWEEN 3 AND 5 THEN 3
WHEN SUM(ms1.MEM_US) BETWEEN 5 AND 10 THEN 5
WHEN SUM(ms1.MEM_US) BETWEEN 20 AND 30 THEN 8
WHEN SUM(ms1.MEM_US) BETWEEN 30 AND 50 THEN 10
WHEN SUM(ms1.MEM_US) > 50 THEN 15
ELSE 0
END AS MEM_TI
FROM
database_1.MEM_SW ms1
WHERE
ms1.MEM_IN IN (
SELECT
tw2.T_NAME
FROM
database_1.T_WY tw2
)
AND ms1.M_DATE between '2015-05-01' and '2015-06-01'
AND ms1.MEM_IN LIKE 'ks%ny%'
GROUP BY
ms1.M_DATE,
ms1.MEM_TEN;

请问有人可以帮我实现这个目标吗?

最佳答案

从表中删除 t_date 和 t_mem 为空但存在具有相同 t_ten 的记录,其中 t_date 和 t_mem 不为空。为此使用 EXISTS 或 IN:

delete 
from mytable
where t_date = '0000-00-00' and t_mem = 0
and t_ten in
(
select t_ten
from mytable
where not (t_date = '0000-00-00' and t_mem = 0)
);

关于mysql - 从表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31244028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com