使用表值构造函数

时间:2017-01-18 20:34:04

标签: sql sql-server

我有一个SQL Server查询,如下所示:

SELECT 
    (SELECT VAL 
     FROM TABLE 
     WHERE IDENTIFIER = E.id) 
FROM 
    (VALUES ('V1'), ('V2'), ('V3')) E(id)

出于性能原因,我使用表值构造函数语法(SELECT FROM VALUES),因为我需要批量运行数百个查询以进行数据验证。

但是,此查询的结果不能保证与我传入的值的顺序相同。

大部分时间都是相同的顺序,但并非总是如此。如何保证此查询的结果与我传入的值的顺序相同?

1 个答案:

答案 0 :(得分:2)

您可以为值添加ORDER BY虚拟列,并为Select Val From Table T Join (Values ('V1', 1), ('V2', 2), ('V3', 3)) E (id, ord) On E.Id = T.IDENTIFIER Order By E.ord; 添加:

groups = []
results = []
for (group, df_gp) in df.groupby('campaign'):
    X=df_gp[['date_ordinal']]
    y=df_gp.shown
    model.fit(X,y)
    coefs = list(zip(X.columns, model.coef_))
    results.append(model.predict(735947)[0])
    groups.append(group)

df_results = pd.DataFrame({'campaign':groups, 'prediction':results})