第一个查询语句中,子查询中用WHERE type=U.type和外部的查询限定。而第二个查询语句中,子查询中是条件是固定的,SELECT MIN(price) FROM dbo.titles WHERE type='trad_cook' ,这个子查询固定返回11.95。

解决方案 »

  1.   

    第一个查询语句中,子查询中用WHERE type=U.type和外部的查询限定,同一个type中获取最小的价格。
      

  2.   


    SELECT type, title, price
    FROM dbo.titles AS U
    WHERE price=(
         SELECT MIN(price) FROM dbo.titles WHERE type=U.type
        )
    SELECT type, title, price
    FROM dbo.titles AS U
    WHERE price=(
         SELECT MIN(price) FROM dbo.titles WHERE type='trad_cook'        )
      
    SELECT type, title, price
    FROM dbo.titles AS U
    WHERE price=(
         SELECT MIN(price) FROM dbo.titles WHERE type=U.type and type='trad_cook'        )
      

  3.   


    我可能没说清楚:第一个查询语句中,子查询中用WHERE type=U.type和外部的查询限定。
    这个限定是不是说:外部的查询变量U.type将取值business。SQL Server 将该值代入到内部查询中
    SELECT type, title, price
    FROM dbo.titles AS U
    WHERE price=(
        SELECT MIN(price) FROM dbo.titles WHERE type='business'     )
    结果为2.9900 ,所以外部查询评估为:
    SELECT type, title, price
    FROM dbo.titles AS U
    WHERE price=(
        2.9900 
        )
    依次类推
    ***************如果我对上面的理解是对的***************************'trad_cook' 时呢?????
    怎样去掉business类型的11.9500的????????????
      

  4.   

    外部的查询变量U.type将取值business。
    -------------------------------------------根据外部的type变化而变化,不是固定的business
      

  5.   

    我还是有点不明白。
    wangtiecheng说根据外部的type变化而变化,不是固定的business,那它也是一个一个的送入的数据。
    向第一次是business类型,第二次trad_cook类型,等等。
    它的内查询每次返回的是一个数值。外查询使用着个数值在查找。
    'trad_cook' 类型的最小值是11.9500,并把它给外查询。
    外查询根据这个值(11.9500)查找。
    这时business类型有一个值是11.9500
       trad_cook类型有一个值是11.9500为什么business被数据库去掉了?????????
      

  6.   

    根据楼主的查询条件得到的结果如下:
    type        title       price                 
    -----------------------------------------------------------------------
    business     You Can Combat Computer Stress!             2.9900 
    mod_cook     The Gourmet Microwave                       2.9900
    popular_comp Secrets of Silicon Valley                   20.0000
    psychology   Life Without Fear                           7.0000
    trad_cook    Fifty Years in Buckingham Palace Kitchens   11.9500不明白楼主意思
    business类的最低价是2.9900 不是11.9500如果把business类的低于11.9500的价格全部改成大于11.9500的那结果就是type        title       price                 
    -----------------------------------------------------------------------
    business     You Can Combat Computer Stress!       type        title       price                 
    -----------------------------------------------------------------------
    business     You Can Combat Computer Stress!             11.9500
    mod_cook     The Gourmet Microwave                       2.9900
    popular_comp Secrets of Silicon Valley                   20.0000
    psychology   Life Without Fear                           7.0000
    trad_cook    Fifty Years in Buckingham Palace Kitchens   11.9500
    mod_cook     The Gourmet Microwave                 2.9900
    popular_comp Secrets of Silicon Valley             20.0000
    psychology   Life Without Fear                     7.0000
    trad_cook    Fifty Years in Buckingham Palace Kitchens   11.9500不知道我的理解是不是对的?
      

  7.   

    --楼主是这个意思?
    SELECT type, title, price
    FROM dbo.titles AS U
    WHERE price=( SELECT MIN(price) FROM dbo.titles WHERE type='trad_cook')
    and type='trad_cook'
      

  8.   

    SELECT type, title, price
    FROM dbo.titles AS U
    WHERE not exists(
        SELECT 1 FROM dbo.titles WHERE type=U.type and price<a.price
        )
    and type='trad_cook'--在这里限制