Mysql常见查询示例

来自泡泡学习笔记
BrainBs讨论 | 贡献2023年6月25日 (日) 06:18的版本 (创建页面,内容为“以下是使用MySQL解决一些常见问题的示例。 其中一些示例使用表格shop来存储每个交易者(dealer)的每个商品(item number)的价格。假设每个交易者对于每个商品都有一个固定的价格,那么(article,dealer)是记录的主键。 启动命令行工具mysql并选择一个数据库: $> mysql your-database-name 使用以下语句创建并填充示例表格: CREATE TABLE shop ( article INT UNSIG…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

以下是使用MySQL解决一些常见问题的示例。

其中一些示例使用表格shop来存储每个交易者(dealer)的每个商品(item number)的价格。假设每个交易者对于每个商品都有一个固定的价格,那么(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 |
+---------+--------+-------+

查询列的最大值

SELECT MAX(article) AS article FROM shop;

+---------+
| article |
+---------+
| 4 |
+---------+


找到某一列最大值所在行

这可以通过子查询轻松完成:

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 解决方案只会显示其中一个。