限制可插入值的次数的问题

时间:2016-02-07 00:15:09

标签: sql sql-server

我在下面的查询中正确插入了它的编写方式。但是,在尝试修改查询以仅插入列' coord'的值时,我遇到了问题。最多5次。

例如,如果列' coord' =' North'。我需要限制“北方”的次数。可以插入。如果10条记录中有' coord' =' North'已经在数据库中5次,然后是' coord'的下一个值。应根据where子句标准选择。

SELECT ID, ROUTE into #TEMP_DISTANCE FROM TRAN_TBL
where handle = 21;


SELECT coord, travels into #temp_planned
FROM converse_TBL


WITH TravelPlansInfo AS
(
    SELECT 
        ID, 
        Route,
        COUNT(1) AS rowcnt
    FROM  
        #TRAN_TBL
    GROUP BY
        ID, 
        Route
)
, rownum_matches AS (
SELECT 
    t.ID, 
    r.coord,
    t.rowcnt,
    ROW_NUMBER() OVER (PARTITION BY t.ID ORDER BY newid()) AS rownum
FROM 
    TravelPlansInfo t
JOIN
    #temp_planned f ON f.travels != t.Route
)
INSERT into #temp_angle
SELECT ID, coord FROM rownum_matches rm WHERE rownum <= rowcnt

我试图通过使用游标来解决这个问题但是它很乱。如果可能的话,我宁愿使用不同的游标替代方案。输入将不胜感激。

1 个答案:

答案 0 :(得分:1)

这种方法更简单。

insert into table
(f1, f2, etc)
select value1, value2, etc
where 
(select count(*)
from wherever) < 5

这假设sql server在select查询中不需要where子句。