SQL SET语句

4

我目前正在提升我的SQL知识。我正在尝试通过从select语句中获取值来声明一个变量。第一个问题:这是否可行?

第二个问题:我有这个SQL尝试做上面的事情。我的意图是将@version_group设置为version_replace所持有的内容,它总是一个单行、单列的结果。

    DECLARE @version_group int
    SET @version_group = SELECT version_replace FROM users WHERE id=@sid

我该如何修正这个无效的语法呢?(假设它是有可能修正的)

在发布的查询中缺少from语句,返回-1给自己! - YsoL8
随意编辑您的问题 - abatishchev
2
你对 SQL 的了解应该包括它是一种基于集合的语言(有双关语意)并且旨在与优化器一起使用。你似乎正在使用 SQL 编写过程性代码。一旦您获得@version_group值,您打算用它做什么?如果答案是“将其用作另一个 SQL 语句中的参数”,那么考虑将两者合并,并让优化器正确地查看事物。 - onedaywhen
5个回答

6
我该如何将这个语法改正为有效的语法?(假设这是可能的) 你需要的语法如下,不过它需要一条原始查询中缺少的信息(FROM子句):
DECLARE @version_group int

select @version_group = version_replace from (you're missing this from your query) where id=@sid

首先!(我需要多个勾选) - YsoL8

2
可以做到。只需执行以下步骤(适用于SQL 2008):
declare @version_group as int=
(SELECT version_replace 
FROM users
WHERE id=@sid);

+1 但值得注意的是,它只在 SQL 2k8 中有效(AS 是可选的)。 - Alex K.
我想你是对的 :( 我使用 SQL 2k8 工作,这是我使用的语法。 - sara

1
DECLARE @version_group int

SELECT @version_group = version_replace
FROM   MyVersionTable
WHERE  id=@sid

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


0
DECLARE @version_group int

-- THEN

SET @version_group = 1

-- OR!

SELECT @version_group FROM version_replace WHERE id=@sid

0
  • 当然
  • SELECT @version_group = version_replace FROM YourTable WHERE id=@sid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接