首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL上的Max of Max

MYSQL上的Max of Max
EN

Stack Overflow用户
提问于 2015-05-03 21:18:09
回答 1查看 412关注 0票数 1

我正在制作一个无环图数据库。

表格材料(id_item,id_collection,.)主键(id_item,id_collection)

(项目可以是集合本身,项目可以是集合的集合)

我的约束是id_collection > id_item (以防止某些循环-第一步)

因此,在插入之前,我需要知道"Max(Max(id_item),Max(id_collection))“

我可以通过做得到这两个值。但无法得到最大的答案:

代码语言:javascript
复制
SELECT max(id_collection)
FROM material

UNION

SELECT max(id_item)
FROM Material

我也试过这样做:

代码语言:javascript
复制
    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 ;

我的汽油用完了。有谁有主意吗?

诚挚的问候,

法特

注:2关于无圈图的有用来源:

  • 数据库Soup : PostgreSQL中的触发预防循环
  • CodeProject :无环图建模
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-03 21:34:47

您应该能够在GREATEST()中使用MySQL函数。

试试这个:

代码语言:javascript
复制
SELECT GREATEST(
   (SELECT MAX(id_item) FROM material),
   (SELECT MAX(id_collection) FROM material));

这将选择最大的项目,无论是最大的(Id_item)还是最大的(Id_collection)。

编辑

看起来有点干净的东西。GREATEST()函数接受传递的参数中最大的参数,因此如果单独使用它,不管表中有多少行,它都会返回,但是选择id_item或id_collection,这比以往任何时候都要大。尽管如此,您可以将GREATEST封装在MAX()中以完成相同的任务:

代码语言:javascript
复制
SELECT MAX(GREATEST(id_item, id_collection))
FROM material;

下面是一个SQL Fiddle示例,这两个例子都有。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30019534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档