繁体   English   中英

如何在 SQL Server 中获得所需的结果?

[英]How to get desired result in SQL Server?

我有如下表:

表一:

ID    COLUMN1   COLUMN2  COLUMN3
-------------------------------
1      123      A12      INDIA
2      134      A12      INDIA
3      425      B124     UNITED STATES
4      500      B124     UNITED STATES
5      525      A12      AUSTRALIA

TABLE A 转换为 TABLE B,按 COLUMN2 和 COLUMN3 分组

表B:

ID   COLUMN1    COLUMN2   COLUMN3
----------------------------------
1     123,134     A12     INDIA
2     425,500     B124    UNITED STATES
3     525         A12     AUSTRALIA

现在,如果表 A 中的值更新,例如第 2 行被删除。 更新后的表A:

ID  COLUMN1   COLUMN2   COLUMN3
---------------------------------------
1   123        A12      INDIA
2   425        B124     UNITED STATES
3   500        B124     UNITED STATES
4   525        A12      AUSTRALIA

现在我必须在 TABLE B 上更新相同的内容以获得低于输出,而不截断数据。

ID  COLUMN1   COLUMN2   COLUMN3
-------------------------------------
1    123        A12     INDIA
2    425,500    B124    UNITED STATES
3    525        A12     AUSTRALIA

我如何获得这个输出? 由于我无法删除 TABLE B 中的第 1 行,因此不应更改 ID 列。

我试过使用 XML 拆分分隔字符串。

从有限的信息来看,我认为您想要使用触发器沿着这些方向进行操作:

CREATE OR REPLACE TRIGGER DEL_TABLEA_TRG
AFTER DELETE ON tableA
FOR EACH ROW
 BEGIN
  UPDATE tableB
  SET    column1=x, column2=y 
  WHERE  tableB.column3 = :old.tablea_column3;
 END DEL_TABLEA_TRG;

因此,每次在 tableA 上删除一行时,都会触发,并使用从 tableA 读取的新数据更新 tableB 上的行(您必须使用适当的 SQL 来执行此操作)

您还必须为插入和更新创建触发器。

或者,创建一个运行您最初使用的 SQL 的视图,这将为您提供看起来像 tableB 并且始终自动更新的内容(尽管性能可能是一个问题,具体取决于您的使用情况)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM