【问题标题】:Nested SELECT clause in SQL Compact 3.5SQL Compact 3.5 中的嵌套 SELECT 子句
【发布时间】:2010-12-28 20:04:25
【问题描述】:

在这篇文章“select with nested select”中,我读到 SQL Compact 3.5 (SP1) 支持嵌套的 SELECT 子句。但我的要求不起作用:

t1 - 表 1 t2 - 表 2 c1, c2 = 列

select 
 t1.c1, 
 t1.c2, 
 (select count(t2.c1) from t2 where t2.id = t1.id) as count_t 
from 
 t1 

在这种情况下,SQL Compact 3.5 SP1 是否支持嵌套的 SELECT 子句?

更新:

SQL Compact 3.5 SP1 可以处理这种类型的嵌套请求:

  • SELECT ... from ... where .. IN (SELECT ...)
  • SELECT ... 来自 (SELECT ...)

【问题讨论】:

  • 您在此查询中遇到什么错误?
  • 错误:“解析查询时出错。[标记行号=1,标记行偏移量=40,错误标记=选择]”
  • 好的,也回答了修订问题
  • 我们回答新问题了吗?????
  • 是的,感谢您的帮助和建议。

标签: sql sql-server select sql-server-ce subquery


【解决方案1】:

也许你需要

select * from LogMagazines where id = (select max id from UserRoles)

?

【讨论】:

  • 同样的问题:“解析查询时出错。[令牌行号=1,令牌行偏移量=40,错误令牌=选择]”
  • 可能你引用的帖子有误,只有3.5SP1支持分选查询?
【解决方案2】:

尝试运行select max(Id) from UserRoles 并确保这会返回正确的结果。 那就试试select * from LogMagazines where id = 有了这个结果,你可能在某个地方有错误。

【讨论】:

  • BTW, id = (select ...) 如果子选择返回多行则无效,那么您需要 id IN (select ....) 尽管我不确定是否是适用于 Compact 3.5
  • 谢谢。 Select * ... IN () 与 SQL Compact 3.5 (SP1) 一起工作。但就我而言,我需要另一个嵌套请求。我更新我的问题以指出新问题。
【解决方案3】:

您试图将标量值等同于理论上的结果集。

试试

select * from LogMagazines where id IN (select max(id) from UserRoles)

好的,我回答了这个问题,你问了一个全新的不同的问题,这并不是它应该如何工作,但要回答 new 问题,你需要做的是加入:

SELECT 
    t1.c1,  
    t1.c2,  
    count_t.c
FROM 
    t1 JOIN (select id, count(t2.c1) as c from t2 GROUP BY t2.id) count_t 
       ON t1.id = count_t.id

附近

【讨论】:

    【解决方案4】:

    感谢大家的帮助和建议。

    问题的最终答案 - 否。 SQL Compact 3.5 SP1 不支持嵌套选择子句。

    【讨论】:

    • 有人知道在 SQL Compact 4 中嵌套查询是否有效吗?我遇到了类似的问题,但我不敢相信它仍然不起作用!!!
    • 我自己回答我的评论...不,它不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 2019-07-15
    • 1970-01-01
    • 2011-07-02
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多