有一张表分别有:1、article 2、dealer 3、price 三个字段
现在要查这张表中同样物品价格最贵的经销商我所不能理解的是(其实就是没有自己的思路)有几点:
1、s1.article = s2.article 这里,这里我实在不能理解都是同一张表它是怎么去比的
2、查询语句的运行顺序是怎么样的,是先运行条件呢,还是先运行select
其实归根结底就是没有思路,最好能提供一下看待这个问题的思路,谢谢!
 article | dealer | price |+---------+--------+-------+|    0001 | A      |  3.45 ||    0001 | B      |  3.99 ||    0002 | A      | 10.99 ||    0003 | B      |  1.45 ||    0003 | C      |  1.69 ||    0003 | D      |  1.25 ||    0004 | D      | 19.95 |SELECT article, dealer, price
FROM   shop s1
WHERE  price=(SELECT MAX(s2.price)
              FROM shop s2
              WHERE s1.article = s2.article);

解决方案 »

  1.   

    1、s1.article = s2.article 这里,这里我实在不能理解都是同一张表它是怎么去比的
    是两张一样的表
    2、查询语句的运行顺序是怎么样的,是先运行条件呢,还是先运行select
    先运行条件
      

  2.   

    饿, 其实我还是对s1.article = s2.article 这个条件耿耿于怀,想不通~~~
      

  3.   

    数据库会对shop s1每一条记录都会去进行 price=(SELECT MAX(s2.price)    FROM shop s2          WHERE s1.article = s2.article);对每一条shop s1记录来说,此时的 s1.article 的值已经知道, 比如是 'AAA0001' ,此时相当于 price=(SELECT MAX(s2.price)    FROM shop s2          WHERE  'AAA0001'  = s2.article) 
      

  4.   


    先运行外循环FROM   shop s1, 对其中每条记录进行WHERE  price=(SELECT MAX(s2.price)             FROM shop s2             WHERE s1.article = 2.article);的比较。