-1

我有一个下表

Table A
Col1  Col2        Col3
Ant   sugar,ice   2,3
Fly   sugar,ice   2,3
jack  water,dent  4,5
pack  water       4,5
hero  sugar,ice   2,3

我想检查表格数据并且必须将表格更新为

Col1  Col2        Col3
Ant   sugar,ice   2,3
Fly   Same as Ant 2,3
jack  water,dent  4,5
pack  water       4,5
hero  Same as Ant 2,3

帮助解决问题,我制作了示例表以了解感谢和问候。

4

2 回答 2

0

对于不同的 RDBMS,语法可能会有所不同,但由于您没有指定一个,因此以下查询应该非常接近“标准”SQL,并且应该适用于大多数引擎:

UPDATE "Table A" AS A1
SET Col2 = 
(
    SELECT 'Same as ' + MIN(A2.Col1) 
    FROM "Table A" AS A2 
    WHERE A2.Col2 = A1.Col2 
    AND A2.Col1 < A1.Col1
)
WHERE EXISTS
(
    SELECT 1
    FROM "Table A" AS A2 
    WHERE A2.Col2 = A1.Col2 
    AND A2.Col1 < A1.Col1
)

注意:恕我直言,这对于表模式来说绝对是可怕的设计,我认为可以肯定地说我永远不会使用以这种方式设计的表。您可能值得阅读一本关于数据库设计的好书,尤其是关于规范化的部分。

于 2013-04-25T07:27:51.040 回答
0

为了SQL Server

UPDATE  a
SET     a.col2 = CASE WHEN a.col1 = b.min_col1 
                    THEN a.col2
                    ELSE 'Same as ' + b.min_col1
                END
FROM    TableA a
        INNER JOIN
        (
            SELECT  col2, MIN(col1) min_col1
            FROM    TableA
            GROUP   BY col2
        ) b ON a.col2 = b.col2

输出

╔══════╦═════════════╦══════╗
║ COL1 ║    COL2     ║ COL3 ║
╠══════╬═════════════╬══════╣
║ Ant  ║ sugar,ice   ║ 2,3  ║
║ Fly  ║ Same as Ant ║ 2,3  ║
║ jack ║ water,dent  ║ 4,5  ║
║ pack ║ water       ║ 4,5  ║
║ hero ║ Same as Ant ║ 2,3  ║
╚══════╩═════════════╩══════╝
于 2013-04-25T07:30:44.180 回答