争怎路由网:是一个主要分享无线路由器安装设置经验的网站,汇总WiFi常见问题的解决方法。

MySQL_常用查询的例子

时间:2024/5/8作者:未知来源:争怎路由网人气:


  +---------+-------+
[page_break]3.4 拥有某个字段的组间最大值的行
 “对每篇文章,找出有最贵的价格的交易者。”
  
  在ANSI SQL中,我可以用这样一个子查询做到:
  
  SELECT article, dealer, price
  FROM  shop s1
  WHERE price=(SELECT MAX(s2.price)
         FROM shop s2
         WHERE s1.article = s2.article)
  
 在MySQL中,最好是分几步做到:
  
 得到一个表(文章,maxprice)。见3.4 拥有某个域的组间最大值的行。
 对每篇文章,得到对应于存储最大价格的行。
 这可以很容易用一个临时表做到:
  
  CREATE TEMPORARY TABLE tmp (
      article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
      price  DOUBLE(16,2)       DEFAULT '0.00' NOT NULL);
  
  LOCK TABLES article read;
  
  INSERT INTO tmp SELECT article, MAX(price) FROM shop GROUP BY article;
  
  SELECT article, dealer, price FROM shop, tmp
  WHERE shop.article=tmp.articel AND shop.price=tmp.price;
  
  UNLOCK TABLES;
  
  DROP TABLE tmp;
  
 如果你不使用一个TEMPORARY表,你也必须锁定“tmp”表。
  
“它能一个单个查询做到吗?”
  
 是的,但是只有使用我称之为“MAX-CONCAT诡计”的一个相当低效的诡计:
  
  SELECT article,
      SUBSTRING( MAX( CONCAT(LPAD(price,6,'0'),dealer) ), 7) AS dealer,
   0.00+LEFT(   MAX( CONCAT(LPAD(price,6,'0'),dealer) ), 6) AS price
  FROM  shop
  GROUP BY article;
  
  +---------+--------+-------+
  

关键词:MySQL_常用查询的例子




Copyright © 2012-2018 争怎路由网(http://www.zhengzen.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版