是否可以在同一外部查询的case语句中使用子查询的结果?

瑞安·琼斯(Ryan Jones)

我正在使用排名算法编写搜索例程,并希望一次性通过。

我的理想查询将是这样的...。

select *, (select top 1 wordposition
           from wordpositions
           where recordid=items.pk_itemid and wordid=79588 and nextwordid=64502
          ) as WordPos,
      case when WordPos<11 then 1 else case WordPos<50 then 2 else case WordPos<100 then 3 else 4 end end end end as rank
from items 

是否可以在这种情况下使用WordPos?它对我产生错误,列名'WordPos'无效。

我知道我可以为每种情况重做子查询,但我认为它实际上会重新运行该情况,不是吗?

例如:

select *, case when (select top 1 wordposition from wordpositions where recordid=items.pk_itemid and wordid=79588 and nextwordid=64502)<11 then 1 else case (select top 1 wordposition from wordpositions where recordid=items.pk_itemid and wordid=79588 and nextwordid=64502)<50 then 2 else case (select top 1 wordposition from wordpositions where recordid=items.pk_itemid and wordid=79588 and nextwordid=64502)<100 then 3 else 4 end end end end as rank from items 

那行得通.....但是否真的每次都会重新运行相同的查询?

很难从测试中看出来,因为它第一次运行很慢,但是随后的运行很快....它正在缓存...所以这意味着它第一次运行它时是第一行,随后是它的三倍。将从缓存中获取结果?

很好奇,做到这一点的最佳方法是...谢谢!瑞安

戈登·利诺夫(Gordon Linoff)

您可以使用子查询来执行此操作。我将坚持使用您的SQL Server语法,即使问题被标记为mysql:

select i.*,
       (case when WordPos < 11 then 1
             when WordPos < 50 then 2
             when WordPos < 100 then 3
        else 4
        end) as rank
from (select i.*,
             (select top 1 wpwordposition
              from wordpositions wp
              where recordid=i.pk_itemid and wordid=79588 and nextwordid=64502
             ) as WordPos
      from items i
     ) i;

这也简化了case声明。您不需要嵌套的case语句来处理多个条件,只需多个where子句即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在同一条语句中使用Case结果作为case似乎不起作用

来自分类Dev

在where语句中使用子查询进行查询

来自分类Dev

“ AND”和“ OR”是否可以在同一查询中使用?

来自分类Dev

在 CASE 语句中使用带有生成序列 ID 的子查询

来自分类Dev

在同一语句中使用 Like 和 between 的 SQL 查询

来自分类Dev

是否可以在INSERT INTO语句中使用查询的column_name?

来自分类Dev

如何在插入语句中使用子查询

来自分类Dev

在MySQL的插入语句中使用子查询

来自分类Dev

在 where 子句中使用子查询更新语句

来自分类Dev

是否可以在 PROC SQL case 语句中使用向量?

来自分类Dev

在 where 子句中使用子查询分解结果

来自分类Dev

我可以在同一父查询中使用子查询值吗?

来自分类Dev

在同一查询中使用内部查询的结果

来自分类Dev

在查询中使用Case IF语句

来自分类Dev

复杂的嵌套 CASE WHEN - 最好在 SELECT 语句中使用子查询还是只连接其他表?

来自分类Dev

在SELECT语句中对SUM使用子查询

来自分类Dev

使用WITH存储子查询以在IN语句中重用

来自分类Dev

在Oracle的另一个case语句中使用case语句的结果

来自分类Dev

具有 oneToMany 关系的实体的休眠查询(在 select 语句中使用子查询)

来自分类Dev

是否可以在同一查询中使用另一个表中的值?

来自分类Dev

MYSQL - 在 UPDATE 语句的 WHERE 子句中对同一表的子查询

来自分类Dev

如何在同一查询中使用SUM结果?

来自分类Dev

是否可以在同一查询中使用运算符“ $ ne”和“ $ elemMatch”?

来自分类Dev

Azure搜索,是否可以在同一查询中使用建议和配置文件计分

来自分类Dev

为什么在 SQL 连接语句中使用 Group By 而在子查询中使用 Order By?

来自分类Dev

是否可以在 if 语句中使用赋值?

来自分类Dev

在IN子句中使用子查询

来自分类Dev

Case 语句或子查询?

来自分类Dev

如何在case语句中进行子查询?

Related 相关文章

  1. 1

    在同一条语句中使用Case结果作为case似乎不起作用

  2. 2

    在where语句中使用子查询进行查询

  3. 3

    “ AND”和“ OR”是否可以在同一查询中使用?

  4. 4

    在 CASE 语句中使用带有生成序列 ID 的子查询

  5. 5

    在同一语句中使用 Like 和 between 的 SQL 查询

  6. 6

    是否可以在INSERT INTO语句中使用查询的column_name?

  7. 7

    如何在插入语句中使用子查询

  8. 8

    在MySQL的插入语句中使用子查询

  9. 9

    在 where 子句中使用子查询更新语句

  10. 10

    是否可以在 PROC SQL case 语句中使用向量?

  11. 11

    在 where 子句中使用子查询分解结果

  12. 12

    我可以在同一父查询中使用子查询值吗?

  13. 13

    在同一查询中使用内部查询的结果

  14. 14

    在查询中使用Case IF语句

  15. 15

    复杂的嵌套 CASE WHEN - 最好在 SELECT 语句中使用子查询还是只连接其他表?

  16. 16

    在SELECT语句中对SUM使用子查询

  17. 17

    使用WITH存储子查询以在IN语句中重用

  18. 18

    在Oracle的另一个case语句中使用case语句的结果

  19. 19

    具有 oneToMany 关系的实体的休眠查询(在 select 语句中使用子查询)

  20. 20

    是否可以在同一查询中使用另一个表中的值?

  21. 21

    MYSQL - 在 UPDATE 语句的 WHERE 子句中对同一表的子查询

  22. 22

    如何在同一查询中使用SUM结果?

  23. 23

    是否可以在同一查询中使用运算符“ $ ne”和“ $ elemMatch”?

  24. 24

    Azure搜索,是否可以在同一查询中使用建议和配置文件计分

  25. 25

    为什么在 SQL 连接语句中使用 Group By 而在子查询中使用 Order By?

  26. 26

    是否可以在 if 语句中使用赋值?

  27. 27

    在IN子句中使用子查询

  28. 28

    Case 语句或子查询?

  29. 29

    如何在case语句中进行子查询?

热门标签

归档