Sql 如果存在选择变量,则无法访问
我很难找到正确的语法,使这项工作 我有一个带有id和color列的表,我想打印出特定颜色的所有idSql 如果存在选择变量,则无法访问,sql,sql-server,Sql,Sql Server,我很难找到正确的语法,使这项工作 我有一个带有id和color列的表,我想打印出特定颜色的所有id if exists(select id from mytable where color = 'red') print id if exists(select id from mytable where color = 'red') print SCOPE_IDENTITY() --which won't work because i'm using select rather
if exists(select id from mytable where color = 'red')
print id
if exists(select id from mytable where color = 'red')
print SCOPE_IDENTITY() --which won't work because i'm using select rather than insert
未定义id
exists子查询中的id不存在于该子查询之外
您可以这样做:
declare @id int;
select @id = id from table_name;
if (@id is not null)
print @id;
未定义id
exists子查询中的id不存在于该子查询之外
您可以这样做:
declare @id int;
select @id = id from table_name;
if (@id is not null)
print @id;
您只需要
从mytable中选择id,其中color='red
这将返回颜色为红色的每个id。如果没有,那么您将在数据集中得到一行,id列中有一行您只需要
从mytable中选择id,其中color='red
这将返回颜色为红色的每个id。如果没有,那么您将在数据集中得到一行,id列中只有一个值
PRINT
只打印一个值。看起来您希望循环遍历结果并打印每个值,这将需要一个光标:
DECLARE @id INT
DECLARE id_cursor CURSOR FOR
SELECT id from mytable where color = 'red'
OPEN id_cursor
FETCH NEXT FROM id_cursor
INTO @id
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @id
FETCH NEXT FROM id_cursor
INTO @id
END
CLOSE id_cursor;
DEALLOCATE id_cursor;
在SQL中这样做似乎很可笑,这也是为什么我在评论中说SQL不是为方便打印查询结果而设计的-您最好返回一个结果集,让消费者打印结果。
print
只打印一个值。看起来您希望循环遍历结果并打印每个值,这将需要一个光标:
DECLARE @id INT
DECLARE id_cursor CURSOR FOR
SELECT id from mytable where color = 'red'
OPEN id_cursor
FETCH NEXT FROM id_cursor
INTO @id
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @id
FETCH NEXT FROM id_cursor
INTO @id
END
CLOSE id_cursor;
DEALLOCATE id_cursor;
在SQL中这样做似乎很荒谬,这也是为什么我在评论中说SQL不是为方便打印查询结果而设计的-您最好返回一个结果集,让消费者打印结果。很抱歉,我的示例不太适合我所尝试的,我刚刚更新了:-)@jamesla。您的代码中仍然存在问题。ID是列名,不是变量。您必须像John那样声明一个变量。这只打印1个id,而不是指定颜色的所有id。(不是你的错,我意识到我遗漏了这一点,并在你发布这篇文章后更新了这个问题。很抱歉,我的例子不太适合我所要做的,我刚刚更新了:-)@jamesla。您的代码中仍然存在问题。ID是列名,不是变量。您必须像John那样声明一个变量。这只打印1个id,而不是指定颜色的所有id。(这不是你的错,我意识到我遗漏了这一点,并在你发布这篇文章后更新了问题)。你为什么使用SQL的
PRINT
?SQL的设计不是为了方便地“打印”查询结果。它只是一个人为的例子。为什么要使用SQL中的print
?SQL的设计不是为了方便地“打印”查询结果。它只是一个人为的例子。最后一句话是不正确的。如果没有,那么他们将得到一个空的结果集。这在技术上是正确的,但是我的示例是人为的,因为我需要使用id运行其他查询,所以我们需要坚持使用print。最后一句话不正确。如果没有,那么他们将得到一个空的结果集。这在技术上是正确的,但是我的示例是人为的,因为我需要使用id运行其他查询,所以我们需要坚持使用打印。好的,这就是我要找的。很抱歉,我试图简化我的示例,我想我把它简化了,但光标正是我要找的,谢谢。好的,这就是我要找的。很抱歉,我试图简化我的例子,我想我做到了简单,但光标正是我要找的,谢谢。