我正在尝试执行以下操作:将status列设置为1第二个表中第一个表(变量)中的行不存在时。
我尝试了这个:
update @table1
set status=1
where NOT EXISTS (select top 1 1 from @table2 where @table1.foo=@table2.foo)
Run Code Online (Sandbox Code Playgroud)
但这甚至无法编译,无法@table1在Where语句中识别。
必须声明标量变量“ @ table1”。
有什么线索吗?
假设我有以下数据tbl:
Label | Color
X | color1
X | color1
Y | color1
Y | color2
Run Code Online (Sandbox Code Playgroud)
样本输出应该是:
X | color1
Y | misc
Run Code Online (Sandbox Code Playgroud)
所以基本上,如果相应的标签只有一种颜色,我希望它是那种类型,否则我希望它说misc.
我做了以下没有按我想要的工作,下一步是将 a 应用case到count:
select label,count(distinct color) from @tbl
group by label,color
Run Code Online (Sandbox Code Playgroud) 有了这个配置,关系模型明智:
A --- * C * --- B
Run Code Online (Sandbox Code Playgroud)
C因此是a和之间的n到n表b.
鉴于这C有以下领域:aID, bID, cValue
并B具有以下内容:bID, bName
我怎样才能选择所有的条目A与n所有列B,与应用aID?
例如,select将返回以下列
aID - bName1 - bName2 - bName3
1 - cValue1 - cvalue2 - cvalue3
2 - cValue4 - cvalue5 - cvalue6
Run Code Online (Sandbox Code Playgroud)
由于A中的不同条目可能与B中的所有条目匹配,也可能不匹配,因此某些列可以为空.
我创建了以下类型:
CREATE TYPE dbo.expressions
AS TABLE
(
expression varchar(255)
);
GO
Run Code Online (Sandbox Code Playgroud)
在存储过程中,我如何使用我收到的n个类型,并且每个类型都使用带有like子句的select?
在"编程"(和伪代码)方面,将是这样的:
for each expression in expressions
rows+=select * from table where table.field LIKE '%' + expression[i] + '%'
Run Code Online (Sandbox Code Playgroud)
我总是可以从我的API多次调用SP,但我想知道这是否可行,甚至更快,在SQL方面做.