我想做的是一个查询,它执行以下操作:
如果我执行查询,所有行都将设置为0,除了where中的某个id(它应该始终为1,此时只能有一行活动)
tbl_menu
id |串行
首发| VARCHAR
板| VARCHAR
饮料| VARCHAR
状态| smallint
因此,如果我有一个状态为1的注册表和0中的所有其他注册表,当我执行此查询时,我选择的某个ID将更改为1而其他ID将更改为0 也只有一行状态= 1
答案 0 :(得分:0)
这是一个基本的更新声明。但是,如果您可以提供有关列名称的更多信息以及您希望进行更新的条件,那将会很有帮助。
FileName = Split(CurrentDb.TableDefs("LinkedExcelRange").Connect, "=")(1)
' FileName -> d:\path\yourexcelfile.xlsx
答案 1 :(得分:0)
这不能解决 update 的问题,但它确实解决了(最多)一行处于活动状态的强制执行问题。使用部分唯一索引:
create unique index unq_menu_active on tblmenu(flag) where flag = 1;
答案 2 :(得分:0)
试试这个:
template<std::size_t index, typename T>
struct tuple_element {
using type = decltype(std::get<index>(std::declval<T>()));
};
答案 3 :(得分:0)
我认为您对设计有两种选择。 1)用两个简单的查询做到这一点。 2)用case语句写一个更复杂的查询。
我个人喜欢简单:
UPDATE tblmenu SET status = 0 WHERE status = 1;
UPDATE tblmenu SET status = 1 WHERE id = n;
尽管如此,我认为这是一个更好的方法......
现在你所要做的就是:
UPDATE tblstatus SET id = n;
更快,更轻松,更强大......