使用 PHP/MySQL 从多列中选择最小值

Chr*_*ngs 3 php mysql

我有一个表设置如下

ID COL1 COL2 COL3
----------------
10 200  n/a  125
11 150  130  n/a
12 100  300  200
13 500  n/a  n/a
Run Code Online (Sandbox Code Playgroud)

除了 ID,所有列都是 TEXT。

使用 PHP 和 MySQL 我需要从 COL1、COL2、COL3 中选择最小的“数字”,在这种情况下它将是 100(从第 12 行,COL1)。

我试过这个:

$query = ("SELECT MIN(LEAST(COL1,COL2,COL3)) FROM rug AS 'query1'");
Run Code Online (Sandbox Code Playgroud)

但我认为 MIN(LEAST 和 AS 'query1' 部分有问题。我收到警告:

Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?谢谢!

Bjo*_*ern 6

我发现了两个错误。

1. SQL

您的查询适用于您的特定示例,但尝试在COL2or 中使用较小的数字COL3,然后您会发现它无法提供您要查找的结果。

试试这个:

SELECT LEAST(
   MIN(COL1),
   MIN(COL2),
   MIN(COL3)
)
FROM yourtable;
Run Code Online (Sandbox Code Playgroud)

2. PHP

为了在 php 中使用 mysql 查询,请查看有关如何存档的手册,您的示例不是如何完成的。如果您的查询字符串存储在 中$SQL,则它可能如下所示:

/* querying... */
$result = mysql_query($SQL);

/* handling possible errors */
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

/* handling the response */
while ($row = mysql_fetch_assoc($result)) {
    var_dump($row);
}
Run Code Online (Sandbox Code Playgroud)