我正在制作一个无环图数据库。
表格材料(id_item,id_collection,.)主键(id_item,id_collection)
(项目可以是集合本身,项目可以是集合的集合)
我的约束是id_collection > id_item (以防止某些循环-第一步)
因此,在插入之前,我需要知道"Max(Max(id_item),Max(id_collection))“
我可以通过做得到这两个值。但无法得到最大的答案:
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 ;我的汽油用完了。有谁有主意吗?
诚挚的问候,
法特
注:2关于无圈图的有用来源:
发布于 2015-05-03 21:34:47
您应该能够在GREATEST()中使用MySQL函数。
试试这个:
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()中以完成相同的任务:
SELECT MAX(GREATEST(id_item, id_collection))
FROM material;下面是一个SQL Fiddle示例,这两个例子都有。
https://stackoverflow.com/questions/30019534
复制相似问题