我在写一个查询,根据它们的当前值更新行。
我检查的其中一个条件是“如果我正在更新的特定行有一列是表中具有4个相同行值的其他行中的最低值”。知道一行是否具有最低的列?
所以..例如,我的表结构如下所示:
INTEGER id - PRIMARY KEY
FLOAT lookup
VARCHAR(128) option1
INTEGER option2
INTEGER option3
INTEGER option4
我想知道如果我UPDATE
-ing行是一个具有最低lookup
值的所有其他行匹配相同的option1
,option2
,option3
和option4
值。
我怎么能在一个查询中实现这样的事情?我试图最大限度地减少查询并最大限度地利用单个查询,所以我无法使用我的前端。我可以使用子查询,并且查询的字符限制是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";
的LOWEST
部分应针对发生的id
1,2和3行IF_LOWEST_IN_TABLE
和三元运算符是“占位符”,因为我不知道它应该如何在SQL中实现。
样本数据和期望结果集会帮助很多。 – lad2025
也是你试过的查询 –
@ lad2025 @Harish Barma - 我添加了示例数据和示例查询。我不知道我是否需要像SELECT这样的结果集,所以我不知道我该怎么做。 – shavit