我是SQL的新手,我还在尝试理解基本的东西,所以我有一个应用程序数据库来比较互联网上的产品价格:
和这个查询:
SELECT
MAX(p1.price - p2.price)
FROM
ProdcutPrice p1
JOIN
ProdcutPrice p2 ON p1.p_id = p2.p_id AND p1.site_id <> p2.site_id
WHERE
p1.p_id = 18 AND to_date IS NULL
现在我正在尝试理解这个查询的作用,我很难理解MAX
函数,因为我知道它应该返回所选列的最大值。语法应为
SELECT MAX(column_name)
FROM table_name;
JOIN
子句的工作方式是INNER JOIN
吗?
答案 0 :(得分:0)
MAX(expression)
在所有找到的记录中找到最大值的表达式(按WHERE
过滤)。注意:如果您没有指定GROUP BY
,则在所有记录中。
JOIN
默认情况下,INNER JOIN
没有任何其他字词。
样品:
<强> ProductPrice 强>:
p_id | site_id | price
-----|---------|------
18 | 1 | 10
18 | 2 | 5
18 | 3 | 7
<强>查询强>:
p1.p_id | p1.site_id | p1.price | p2.p_id | p2.site_id | p2.price | p1.price-p2.price
--------|------------|----------|----- ---|------------|----------|------------------
18 | 1 | 10 | 18 | 2 | 5 | 5 (max)
18 | 1 | 10 | 18 | 3 | 7 | 3
18 | 2 | 5 | 18 | 1 | 10 | -5
18 | 2 | 5 | 18 | 3 | 7 | -2
18 | 3 | 7 | 18 | 1 | 10 | -3
18 | 3 | 7 | 18 | 2 | 5 | 2
答案 1 :(得分:0)
确实JOIN
相当于INNER JOIN
。
如果您运行没有MAX()
聚合函数的查询,请执行以下操作:
SELECT p1.price - p2.price
FROM ...
你会看到它返回一列。因此,将聚合应用于此列是完全合法的,例如MAX
或SUM
。