【发布时间】:2012-07-01 22:09:58
【问题描述】:
我需要更改是/否列,其中日列具有最高值和第二高值。
Id menu(INT NOT NULL PRIMARY KEY) ;天(INT NULL);是/否(BIT NUL)
100; 1; 1
101; 2; 0
102; 3; 1
103; 4; 0
104; 5; 0
我应该得到的结果是
ID 菜单(INT NOT NULL PRIMARY KEY);天(INT NULL);是/否(BIT NUL)
100; 1; 1
101; 2; 0
102; 3; 1
103; 4; 1
104; 5; 1
我可以用 UPDATE Menu SET YES/NO = 1 WHERE DAY = 4
但由于日子将继续上升,这意味着我必须在撰写声明之前知道哪一天是最高的日子。如何更新查找具有最高值和次高值的日期的语句 我试过 UPDATE Menu SET YES/NO = 1 WHERE MAX(day)
【问题讨论】:
-
尝试
UPDATE menu SET yes_no=1 WHERE day=MAX(day) OR day=(MAX(day)-1);或者如果没有顺序并且您不知道第二个最大值将低于最大值,那么UPDATE menu SET yes_no=1 WHERE day=MAX(day) OR day=(SELECT MAX(day) FROM menu WHERE day<MAX(day)); -
你想做什么?我从您的描述中看不到您如何在 ID = 101 的行中获得 0;实际上,也不是 100 或 102。“日列中的最高两个值”是 4 和 5,因此所有较早的值(1、2、3)都应该将是/否位设置为否,不是吗? ?
标签: sql