5.6常见查询的例子
5.6.1列的最大值
5.6.2最大值为某一列的行
5.6.3每组最大列
5.6.4拥有某一列最大群的行
5.6.5使用用户定义的变量
5.6.6使用外键
5.6.7按两个键搜索
5.6.8每天访问次数计算
5.6.9使用自动增加
下面是如何用mysql解决一些常见问题的例子。
一些例子使用表shop 为某些商人(经销商)保管每件物品(物品编号)的价格。假设每个交易者每件物品有一个固定价格,然后(article , dealer 是记录的主要钥匙。
启动命令行工具 Mysql 并选择一个数据库:
$> mysql your-database-name
要创建和填充示例表,请使用这些语句:
CREATE TABLE shop (
article INT UNSIGNED DEFAULT '0000' NOT NULL,
dealer CHAR(20) DEFAULT '' NOT NULL,
price DECIMAL(16,2) DEFAULT '0.00' NOT NULL,
PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
(1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
(3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
在发表声明后,表格应包括以下内容:
SELECT * FROM shop ORDER BY article;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 1 | A | 3.45 |
| 1 | B | 3.99 |
| 2 | A | 10.99 |
| 3 | B | 1.45 |
| 3 | C | 1.69 |
| 3 | D | 1.25 |
| 4 | D | 19.95 |
+---------+--------+-------+
5.6.1列的最大值
“ 最高商品编号是多少? ”
SELECT MAX(article) AS article FROM shop;
+---------+
| article |
+---------+
| 4 |
+---------+
5.6.2最大值为某一列的行
任务:找到最贵商品的编号、经销商和价格。
通过子查询可以很容易地做到这一点:
SELECT article, dealer, price
FROM shop
WHERE price=(SELECT MAX(price) FROM shop);
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0004 | D | 19.95 |
+---------+--------+-------+
另一个解决方案是使用LEFT JOIN ,如图所示:
SELECT s1.article, s1.dealer, s1.price
FROM shop s1
LEFT JOIN shop s2 ON s1.price < s2.price
WHERE s2.article IS NULL;
您也可以通过按价格对所有降行进行排序来实现这一点,并且只使用与Mysql相关的第一行。 LIMIT 就像这样:
SELECT article, dealer, price
FROM shop
ORDER BY price DESC
LIMIT 1;
注意事项
如果有几件最贵的东西,每件的价格是19.95英镑,那么LIMIT 解决方案只会显示其中一个。