Mysql SQL列中只有一个单元格可以有X值
在设计表SQL、MySQL时,是否有办法确保X列中只有一个单元格为Mysql SQL列中只有一个单元格可以有X值,mysql,sql,Mysql,Sql,在设计表SQL、MySQL时,是否有办法确保X列中只有一个单元格为true,其余单元格自动为false?当您将不同单元格的值更改为true时,所有其他单元格应自动变为false。单选按钮类型的排他性,但用于列 mainOfferName | value --------------------- pizza | false spaghetti | false salad | true stew | false 改变比萨饼作为主要供应时,
true
,其余单元格自动为false
?当您将不同单元格的值更改为true时,所有其他单元格应自动变为false。单选按钮类型的排他性,但用于列
mainOfferName | value
---------------------
pizza | false
spaghetti | false
salad | true
stew | false
改变比萨饼作为主要供应时,您会得到如下内容:
mainOfferName | value
---------------------
pizza | true
spaghetti | false
salad | false
stew | false
我可以手动运行查询并确保在任何给定时间只有一个值为真,但是我很好奇,我是否可以在我的表中添加一个约束,这样我就可以只更改需要
true
的行/单元格,而DB引擎只负责保持该值true
有一个单独的表,其中一行包含所需行的mainfername
。然后查询为:
select yt.*, (nt.mainOfferName is not null) as valueFlag
from yourtable yt left join
newtable nt
on yt.mainOfferName = nt.mainOfferName;
如果要更改该值,请在newtable
中更改该值
注意:您可以将查询放入视图中,只读用户就可以工作了
而且,您可以通过
yourtable
上的update
触发器来实现这一点。它不会更新您的表
,而是更新新表
您需要它做什么?我觉得这与你使用数据库的目的背道而驰。也许你可以创建一个变量selectedItem
,它指向你想要的行?@McAdam331好奇。很公平,哈哈。我不是建议反对,只是好奇自己。太好了!好极了。。。!听起来很有趣。谢谢,我有个问题。yt.*
的含义是什么yt
是别名,但什么是*
?当你使用*
时,它意味着一切,你不需要使用其他任何东西。你能给我解释一下吗?tnx@stack星号用于选择所有列。在本例中,存在一个联接,因此星号将从两个表中选择所有列。通过将表别名放在第一位,只会选择该表中的列。我有一个与主题无关的问题,这两个词之间有区别吗nt.mainOfferName不为空
和nt.mainOfferName'