需要在mysql中使用SELECT获取Max/Min和介于两者之间的所有行


Need to get Max/Min and all the rows in-between with a SELECT in mysql

我正在尝试获取最大值和最小值,并将它们分配为php中的单独变量,再选择其间的所有其他行,并将其作为另一个变量,然后用检索到的信息填充下拉列表。

SELECT z_depth AS z_depth FROM elements
UNION
SELECT MAX(z_depth) AS MAX FROM elements
UNION
SELECT MIN(z_depth) AS MIN FROM elements

问题是它没有将z_depth返回为z_depth,将MAX返回为MAX等,它只显示为z_depth。如果有人不介意指出一个解决方案或可能更好的方法,我将不胜感激。

一个简单的SQL查询:

SELECT z_depth
FROM elements
ORDER BY z_depth ASC

将其读取到一个名为$results的数组中,然后执行:

$min = min($results);
$max = max($results);

那应该能得到你想要的。

您可以在查询中创建第二列,该列将标识记录的性质("max"、"min"、"other"):

SELECT z_depth AS z_depth,  'Other' AS Type FROM elements
UNION
SELECT MAX(z_depth) AS MAX, 'Max'   AS Type FROM elements
UNION
SELECT MIN(z_depth) AS MIN, 'Min'   AS Type FROM elements

只执行一系列UNION查询的问题是,您最终只得到一列,而不知道任何特定记录可能在哪里。

你在尝试类似的东西吗

SELECT z_depth FROM元素,其中z_depth>=(SELECT MIN(z_deptth)FROM元素)&amp;z_depth<=(从元素中选择最大值)按z_depth ASC 排序

然后,您可以始终将第一行和最后一行保存为最小和最大