2011-06-27 63 views
3

我目前正在提高自己的SQL知识。目前我试图通过从select语句获取值来声明一个变量。第一个问题:这可能吗?SQL SET语句

第二个问题:我有这个SQL试图做到上述。我的意图是将@version_group设置为version_replace保持的任何值,这总是单行,单列结果。

DECLARE @version_group int 
    SET @version_group = SELECT version_replace FROM users WHERE [email protected] 

我该如何将此更正为有效的语法? (假设有可能)

+0

-1自我在发布查询从语句中缺少! – YsoL8

+0

欢迎随时编辑您的问题 – abatishchev

+2

您对SQL的了解应该包括它是基于集合的语言(双关语意),并且旨在与优化器一起工作。您似乎在使用SQL来编写过程代码。一旦拥有'@ version_group'值,你将如何处理它?如果答案是“在另一个SQL语句中使用它作为参数”,那么考虑将这两者结合起来并给予优化器正确的外观。 – onedaywhen

回答

4

我该如何纠正这个问题syntex? (假设这是可能的)

你想要的语法如下,它需要一个一块信息,你不要在你原来的工作有虽然(FROM子句):

DECLARE @version_group int 

select @version_group = version_replace from (you're missing this from your query) where [email protected] 
+0

打勾为第一! (我需要多个刻度) – YsoL8

1
DECLARE @version_group int 

SELECT @version_group = version_replace 
FROM MyVersionTable 
WHERE [email protected] 

不要忘记包含您的数据源(即表格,视图,替换上面的MyVersionTable)。

2

这是可能的。只要做到(SQL 2008):

declare @version_group as int= 
(SELECT version_replace 
FROM users 
WHERE [email protected]); 
+0

+1但值得注意的是它仅在SQL 2k8中有效(并且AS是可选的) –

+0

我想你是对的:(我使用SQL 2k8并且这是我使用的语法。 – sara

0
DECLARE @version_group int 

-- THEN 

SET @version_group = 1 

-- OR! 

SELECT @version_group FROM version_replace WHERE [email protected]