【发布时间】:2013-11-05 13:19:29
【问题描述】:
例如我有一张桌子
| ID | Key | Value |
--------------------
| 1 | a | 123 |
| 2 | b | 354 |
| 3 | c | 980 |
| 4 | b | 354 |
| 5 | a | 123 |
我想获得Key 和Value 相等的组。所以会是
| 1 | a | 123 |
| 5 | a | 123 |
--------------------
| 2 | b | 354 |
| 4 | b | 354 |
--------------------
| 3 | c | 980 |
然后对于每个组,我想执行一些操作。比如在另一个表中为每个 ID 检查一些值并设置一些标志......
我认为GROUP BY 在这里会很有用,但我不知道如何实现我想要的。
编辑
如果你需要一个动作的例子......
假设我有另一个表,其中ID 是外键。
| ID | Name | Address | IsActive |
对于每个组,我想检查该组中的任何项目是否有地址,并将该组中的所有其他项目的IsActive 设置为false。
【问题讨论】:
-
然后对于每个组我想执行一些操作你必须比这更具体。
-
您应该注意,因为您的外键是 ID,所以您不是在检查 GROUP 是否有地址,而是在检查 ID 是否有地址。如果您想检查 GROUP 是否有地址,则必须在 ADDRESS 表中包含“KEY”和“VALUE”字段,以便加入它们。
-
如果这回答了您的问题,请告诉我。
-
感谢您的回答。我稍后会尝试,现在做不到。还有没有“地址”表中的“键”和“值”字段的任何方法?
-
试试我的建议,看看它是否能产生预期的结果。如果没有,请发布您的输出,我会帮助您。
标签: sql sql-server group-by grouping