WEB开发网
开发学院数据库MySQL MySQL中文参考手册-- 常用查询的例子 阅读

MySQL中文参考手册-- 常用查询的例子

 2008-12-19 11:14:30 来源:WEB开发网   
核心提示: 3.2 拥有某个列的最大值的行“找出最贵的文章的编号、商人和价格”在ANSI-SQL中这很容易用一个子查询做到:SELECT article, dealer, priceFROM shopWHEREprice=(SELECT MAX(price) FROM shop

3.2 拥有某个列的最大值的行

“找出最贵的文章的编号、商人和价格”

  在ANSI-SQL中这很容易用一个子查询做到:
  SELECT article, dealer, price
  FROM  shop
  WHERE price=(SELECT MAX(price) FROM shop)

在MySQL中(还没有子查询)就用2步做到:

用一个SELECT语句从表中得到最大值。

使用该值编出实际的查询:

  SELECT article, dealer, price
  FROM  shop
  WHERE price=19.95

另一个解决方案是按价格降序排序所有行并用MySQL特定LIMIT子句只得到的第一行:

  SELECT article, dealer, price
  FROM  shop
  ORDER BY price DESC
  LIMIT 1

注意:如果有多个最贵的文章( 例如每个19.95),LIMIT解决方案仅仅显示他们之一!

3.3 列的最大值:按组:只有值

“每篇文章的最高的价格是什么?”

  SELECT article, MAX(price) AS price
  FROM  shop
  GROUP BY article
  +---------+-------+
  | article | price |
  +---------+-------+
  |  0001 | 3.99 |
  |  0002 | 10.99 |
  |  0003 | 1.69 |
  |  0004 | 19.95 |
  +---------+-------+

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)

上一页  1 2 3 4  下一页

Tags:MySQL 参考

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接