【问题标题】:Can I use a cursor in the select part of a SQL query?我可以在 SQL 查询的选择部分使用游标吗?
【发布时间】:2016-02-04 14:39:28
【问题描述】:

我想从两个表中选择列并添加一个额外的列并将其放入一个表中。我的问题是我可以使用游标遍历表格并计算一个值,然后将其分配给选择部分中的新列,如下所示

    SELECT a.cola,
           a.colB,
           b.colC,
           b.colD,
           (CURSOR TO LOOP THROUGH a table and then calculate some value) as new column
    INTO NEWTABLE
    FROM a
    INNER JOIN b
    ON a.id=b.id
    WHERE etc

我只需要知道这是可能的吗?

【问题讨论】:

  • 不,在 SQL Server 中不可能
  • 你在程序上思考。 sql 在集合中效果最好。你必须改变你的心态,想想你想对一列做什么,而不是你想对每一行做什么。
  • 如果结果集中只有一列,您可以使用子查询,否则您可以使用交叉应用
  • 您可以添加一些示例数据和预期输出

标签: sql-server loops select cursor qtsql


【解决方案1】:

您可以使用相关子查询(这确实意味着您必须确保每条记录只能返回一个值),但出于性能原因,如果可能的话,最好通过连接来执行此操作。如果基于集合的替代方案有效,则永远不应考虑将循环作为获取数据的一种方式。

【讨论】:

  • 谢谢,这是有道理的。从我读过的内容来看,鉴于这种语言基于集合论,连接是一种更好的方法,您会同意这一点。我认为尽量减少游标的使用是最好的方法
猜你喜欢
  • 2018-10-18
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
  • 2013-05-10
相关资源
最近更新 更多