select year,(select sum(salary) from test where year <=t.year) as salary from test t; 
我想知道这样的语句遵循什么样的语法,这一块我很空白,请高手多多指点,谢谢!还有这样形势的sql怎么用阿?叫什么查询?是“标量全查询”马?
SELECT (SELECT s1 FROM t2) FROM t1; 
SELECT (SELECT s2 FROM t1); 请各位不吝赐教,谢谢!!!!!

解决方案 »

  1.   

    这是select的嵌套查询。
    select查询语句的精华也在这里,是比较难学的。至于“标量全查询”我还没听说过.
      

  2.   

    这种语法不是标准的SQL语法,部分数据库是不支持的,比如informix。
      

  3.   

    语法上是嵌套查询,但你的逻辑似乎没什么价值吧,
    select sum(salary) from test where year <=t.year
    这个子查询和外层查询的表之间没有连接条件吗?现在的逻辑是每条test表的数据和内层的test表间都是全连接。
    再有一个问题,子查询中的test没有起别名阿,为什么不起别名,这样会导致编译报错的,至少在oracle可能会,
    因为year字段是不唯一的,如果你有什么特别的查询逻辑,我倒可以给你些建议,你这个问题的确很难回答的
      

  4.   

    嵌套查询。好像部分数据库系统才支持。比如oracle,mysql好像不支持。记不太清楚了。
      

  5.   

    只有少数像oracle这样的数据库才支持
      

  6.   

    楼上的说法真是邪恶啊!
    其实就是子查询一种,当一个查询语句嵌套在另一个查询的查询条件之中时,称为子查询。子查询总是写在圆括号中,可以用在使用表达式的任何地方。 如:嵌套在Select 、Insert 、Update 或Delete语句或其他子查询中的查询。任何允许使用表达式的地方都可以使用子查询。子查询也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择。
    楼主要是想学好子查询的话可以在网上专门找一些题来做,先从简单的开始,一旦入了门,就会感觉很轻松了。