Mysql 知道行是否具有最低的列?

Mysql 知道行是否具有最低的列?,mysql,sql,Mysql,Sql,我正在编写一个根据行的当前值更新行的查询。 我要检查的条件之一是“如果我要更新的特定行有一列是表中具有4个相同行值的其他行中的最低值” 所以。。例如,我的表结构如下所示: INTEGER id - PRIMARY KEY FLOAT lookup VARCHAR(128) option1 INTEGER option2 INTEGER option3 INTEGER option4 我想知道我正在更新的行是否是与相同的选项1、选项2、选项3和选项4值匹配的所有其他行中查找值最低的行 如何在一个

我正在编写一个根据行的当前值更新行的查询。
我要检查的条件之一是“如果我要更新的特定行有一列是表中具有4个相同行值的其他行中的最低值”

所以。。例如,我的表结构如下所示:

INTEGER id - PRIMARY KEY
FLOAT lookup
VARCHAR(128) option1
INTEGER option2
INTEGER option3
INTEGER option4
我想知道我正在更新的行是否是与相同的
选项1
选项2
选项3
选项4
值匹配的所有其他行中查找值最低的行

如何在一个查询中实现这样的事情?我试图最小化查询并从单个查询中获得最大的收益,所以我不能使用我的前端。我可以使用子查询,查询的字符限制为8192个字符

编辑:
示例行:

id | lookup | option1 | option2 | option3 | option4
1  | 1.000  | "a"     | 2       | 1       | 4
2  | 1.100  | "a"     | 1       | 1       | 2
3  | 1.200  | "a"     | 1       | 1       | 1
4  | 1.250  | "a"     | 1       | 1       | 1
5  | 1.300  | "a"     | 1       | 1       | 1
我希望执行的查询:

UPDATE table SET option2 = IF_LOWEST_IN_TABLE(lookup)? LOWEST:NOT_LOWEST WHERE option1 = "a";

最低的
部分应该出现在
id
1、2和3的行中。表中的
IF\u lower\u和三元运算符是“占位符”,因为我不知道该如何在SQL中实现它。

您可以使用
连接
分组方式

UPDATE table t JOIN
       (SELECT min(id) as minid, option1, option2, option3, option4
        FROM t
        GROUP BY option1, option2, option3, option4
       ) tt
       ON t.id = tt.minid
   SET t.option2 = LOWEST
   WHERE option1 = 'a';
编辑:

如果要设置
最低值
非最低值
,请使用
左连接

UPDATE table t LEFT JOIN
       (SELECT min(id) as minid, option1, option2, option3, option4
        FROM t
        GROUP BY option1, option2, option3, option4
       ) tt
       ON t.id = tt.minid
   SET t.option2 = (CASE WHEN tt.minid IS NOT NULL THEN LOWEST ELSE  NOT_LOWEST END)
   WHERE option1 = 'a';

示例数据和所需的结果集将有很大帮助tried@lad2025@Harish Barma-我添加了示例数据和示例查询。我不知道我是否需要一个像
SELECT
这样的结果集,所以我不知道我应该做什么。请同时显示我所做的预期结果<代码>如果\u表中的\u最低(查找)?最低:非最低
是预期结果。如果
lookup
是表中最低的,则将该值设置为
lower
,如果不是,则设置为
not_lower
。但如何执行“三元运算符”(
else
)的另一侧?在我的例子中,
NOT_lower