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 示例,其中包含两者。