MYSQL 上的最大值
Max of Max on MYSQL
我正在制作一个非循环图数据库。
TABLE Material (id_item,id_collection,...)
主键(id_item,id_collection)
(item可以是collection本身,item可以是collection of collection)
我的约束是 id_collection > id_item(以防止某些循环 - 第一步)
所以在插入之前我需要知道"Max(Max(id_item), Max(id_collection))"
我可以通过做得到他们的2个值。但无法获得最大值:
SELECT max(id_collection)
FROM material
UNION
SELECT max(id_item)
FROM Material
我也试过这样做:
DELIMITER $$
CREATE PROCEDURE `findmax`
(
)
BEGIN
DECLARE max_item SMALLINT;
DECLARE max_collection SMALLINT;
DECLARE max_of_both SMALLINT;
SELECT MAX(id_item)
INTO max_item
FROM material
SELECT MAX(id_collection)
INTO max_collection
FROM material
SET max_of_both = MAX(max_item, max_collection)
END$$
DELIMITER ;
我 运行 没油了。有人有想法吗?
此致,
错误
N.B。 2 个关于无环图的有用资源:
您应该可以在 MySQL 中使用 GREATEST()
功能。
试试这个:
SELECT GREATEST(
(SELECT MAX(id_item) FROM material),
(SELECT MAX(id_collection) FROM material));
这将 select 最大的项目,无论是 MAX(id_item) 还是 MAX(id_collection)。
编辑
可能看起来更干净一些。 GREATEST()
函数采用传递给它的最大参数,因此如果您单独使用它,它会 return 但是 table 中有很多行,但是 select使用 id_item 或 id_collection,以较大者为准。也就是说,您可以将 GREATEST
包裹在 MAX()
中以实现相同的任务:
SELECT MAX(GREATEST(id_item, id_collection))
FROM material;
这是一个 SQL Fiddle 示例,其中包含两者。
我正在制作一个非循环图数据库。
TABLE Material (id_item,id_collection,...) 主键(id_item,id_collection)
(item可以是collection本身,item可以是collection of collection)
我的约束是 id_collection > id_item(以防止某些循环 - 第一步)
所以在插入之前我需要知道"Max(Max(id_item), Max(id_collection))"
我可以通过做得到他们的2个值。但无法获得最大值:
SELECT max(id_collection)
FROM material
UNION
SELECT max(id_item)
FROM Material
我也试过这样做:
DELIMITER $$
CREATE PROCEDURE `findmax`
(
)
BEGIN
DECLARE max_item SMALLINT;
DECLARE max_collection SMALLINT;
DECLARE max_of_both SMALLINT;
SELECT MAX(id_item)
INTO max_item
FROM material
SELECT MAX(id_collection)
INTO max_collection
FROM material
SET max_of_both = MAX(max_item, max_collection)
END$$
DELIMITER ;
我 运行 没油了。有人有想法吗?
此致,
错误
N.B。 2 个关于无环图的有用资源:
您应该可以在 MySQL 中使用 GREATEST()
功能。
试试这个:
SELECT GREATEST(
(SELECT MAX(id_item) FROM material),
(SELECT MAX(id_collection) FROM material));
这将 select 最大的项目,无论是 MAX(id_item) 还是 MAX(id_collection)。
编辑
可能看起来更干净一些。 GREATEST()
函数采用传递给它的最大参数,因此如果您单独使用它,它会 return 但是 table 中有很多行,但是 select使用 id_item 或 id_collection,以较大者为准。也就是说,您可以将 GREATEST
包裹在 MAX()
中以实现相同的任务:
SELECT MAX(GREATEST(id_item, id_collection))
FROM material;
这是一个 SQL Fiddle 示例,其中包含两者。