在SQL中,是否有一种方法可以强制一组列中只有一个列具有值,而其他列为null?可能是制约因素还是触发因素?这种类型的东西可能是用于查找表的,但是是否有其他替代表设计可能会更好地完成此工作呢?
例如:
ID OtherTable1ID OtherTable2ID OtherTable3ID
-----------------------------------------------------
1 23 NULL NULL
2 NULL 45 NULL
3 33 55 NULL -- NOT ALLOWED
主要问题是这些列都是其他表的FK,因此我无法将它们折叠为单个列。
我正在使用SQL Server,但是任何答案都可以。
@tvanfosson的建议约束可以在三列中正常工作,但出于一般性考虑,我更喜欢
(cast(col1 is not null, int) +
cast(col2 is not null, int) +
cast(col3 is not null, int)) = 1
因为它可以更好地推广到具有“线性增长”(而不是“按平方增长”)编码量的任何数量的列(在SQL方言中甚至更整洁,不需要显式地将布尔aka位转换为int,但是我不知道SQL
Server是否是其中之一)。
问题内容: 但是我似乎无法使它与Visual Studio 2008中的SQL Server Express一起使用。 相同的表布局,一列具有标识和主键。 问题答案: INSERT INTO dbo.TableWithOnlyIdentity DEFAULT VALUES 就我而言,这很好。您如何尝试将这些行放入数据库中?SQL Server Mgmt Studio?从.NET应用程序进行SQL查
我正在开发一个spring boot应用程序。我试着开发了一些单元测试。单元测试必须在不启动容器中的应用程序的情况下运行,必须是如此快,可以在不需要大量时间的情况下运行。假设我有一个类名,如下所示: 和以下测试:
我想在PostgreSQL中设置一个表,这样两列在一起必须是唯一的。任何一个值都可以有多个值,只要没有两个值同时共享。 例如: 因此,和可以重复,但不能同时重复。因此,这是允许的(不包括id) 但不是这个:
问题内容: 我有3个变量:,和。 如何设置并执行一次此查询? 问题答案:
问题内容: 基本上,我想使此命令起作用: EntryDate以文本形式在数据库中,但是TotalTime是一个数字。我需要将TotalTime转换为文本,因为我已经注意到,如果我将两种不同类型的值组合在一起,它只会使输出空白。 我知道我应该使用CAST(TotalTime为XXX),但是我不确定我可以合法地将其强制转换为什么(char / nchar似乎不起作用,字符串和文本都不起作用)。我总是会
问题内容: 我有一个熊猫数据框。我尝试将包含字符串值的两列首先连接到列表中,然后使用zip,我将列表的每个元素都用’_’连接。我的数据集如下: 我想将这两列连接到第三列,如下所示,分别用于数据框的每一行。 我已经使用下面的代码在python中成功完成了此操作,但该数据框非常大,并且需要花费很长时间才能为整个数据框运行它。我想在PySpark中做同样的事情以提高效率。我已经成功读取了spark数据框