Mysql 使用SQL查询更新除一行以外的所有行
我有一张这样的桌子Mysql 使用SQL查询更新除一行以外的所有行,mysql,sql,oracle-sqldeveloper,Mysql,Sql,Oracle Sqldeveloper,我有一张这样的桌子 +-------------------------------------+ | Description | ID | Show(1 or 0) | +-------------------------------------+ 我有一堆描述相同的条目,但其中一个ID为null。我必须将所有不带null的行上的show设置为0,但前提是它们具有多个相同描述的行2。我是SQL新手,我有大约5万行,所以我不想手动操作 美国987655 1-更改为0 美国987658
+-------------------------------------+
| Description | ID | Show(1 or 0) |
+-------------------------------------+
我有一堆描述相同的条目,但其中一个ID为null。我必须将所有不带null的行上的show设置为0,但前提是它们具有多个相同描述的行2。我是SQL新手,我有大约5万行,所以我不想手动操作
美国987655 1-更改为0
美国987658 1-更改为0
美国987617 1-更改为0
美国9876空-未更改
CAN 7655 1-未更改
CAN 957655 1-未更改
已尝试:
UPDATE test1 t1,
(
SELECT id, description, show AS mid
FROM test1 ti
GROUP BY
description
) tm
SET show = 0
WHERE t1.description= tm.description
AND id is not null;
提前谢谢您需要一个相关的子查询。我还没有测试过这个,所以请小心使用。但像这样的事情可能就是你想要的
UPDATE
some_table st1
JOIN (
SELECT st2.description, count(*) c
FROM some_table st2
WHERE
st1.description = st1.description AND
st1.id IS NOT NULL AND
st2.id IS NOT NULL
GROUP by st2.description
HAVING c > 1
) AS tmp ON tmp.description = st1.description
SET st1.show = 0
这不是最后的答案,但可以帮你很多(我想) 执行此查询以查看哪些查询应从0更新为1
SELECT description, COUNT(*) as "Same Description" FROM table
WHERE id <> null
GROUP BY description
HAVING COUNT(*) > 2
从表中选择描述,将(*)计数为“相同的描述”
其中id为null
按描述分组
计数(*)大于2的
请参见。从左表中选择ID,然后连接同一个表,其中某些内容与其他内容匹配,而某些内容为空。。。回答了这么多次。例如,在上面记录的最后一部分中,这一行是否EUR 66666 1 0
,是否需要将其更改为1?或者没有,因为它只有一个EUR
?没有,只有当它有两个以上的entriesok时才有,但是为什么USA
将更改为0
,并且可以保留其值,用于显示
?