您如何使用按功能分组和长度过滤器来执行 SQL 更新 table?
How do you do a SQL update a table using a group by function, and length filter?
我正在尝试通过过滤列的长度以及第三列的最大值来更新两列中的特定记录以获取最新记录。我知道我不能像这样按函数使用分组,并且一直在尝试弄清楚如何使用子查询来做到这一点。
UPDATE TABLE
SET COLUMN1 = 'NULL', COLUMN2 = 'NULL'
WHERE LENGTH (COLUMN1) BETWEEN 10 AND 20
AND MAX (COLUMN3)
SELECT *
FROM TABLE
WHERE LENGTH(COL1) BETWEEN 10 AND 20
AND MAX(COLUMN3)
这 returns 我想要的,例如。它们是 table 中的两列,我想将具有特定长度的特定行设置为空,还使用 max 函数进行过滤以获取最新记录。
我怀疑你想要这个:
UPDATE TABLE
SET COLUMN1 = 'NULL', COLUMN2 = 'NULL'
WHERE LENGTH(COLUMN1) BETWEEN 10 AND 20 AND
COLUMN3 = (SELECT MAX(t2.COLUMN3)
FROM TABLE t2
WHERE LENGTH(t2.COLUMN1) BETWEEN 10 AND 20
);
此外,为什么要将列设置为字符串 'NULL'
?如果你想要一个 NULL
值,那么去掉单引号。
我正在尝试通过过滤列的长度以及第三列的最大值来更新两列中的特定记录以获取最新记录。我知道我不能像这样按函数使用分组,并且一直在尝试弄清楚如何使用子查询来做到这一点。
UPDATE TABLE
SET COLUMN1 = 'NULL', COLUMN2 = 'NULL'
WHERE LENGTH (COLUMN1) BETWEEN 10 AND 20
AND MAX (COLUMN3)
SELECT *
FROM TABLE
WHERE LENGTH(COL1) BETWEEN 10 AND 20
AND MAX(COLUMN3)
这 returns 我想要的,例如。它们是 table 中的两列,我想将具有特定长度的特定行设置为空,还使用 max 函数进行过滤以获取最新记录。
我怀疑你想要这个:
UPDATE TABLE
SET COLUMN1 = 'NULL', COLUMN2 = 'NULL'
WHERE LENGTH(COLUMN1) BETWEEN 10 AND 20 AND
COLUMN3 = (SELECT MAX(t2.COLUMN3)
FROM TABLE t2
WHERE LENGTH(t2.COLUMN1) BETWEEN 10 AND 20
);
此外,为什么要将列设置为字符串 'NULL'
?如果你想要一个 NULL
值,那么去掉单引号。