我无法找到正确的语法来完成这项工作吗?
我有一个包含列id和颜色的表格,我想打印出特定颜色的所有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 than insert
答案 0 :(得分:2)
id未定义。
存在子查询中的id不存在于子查询之外。
你可以这样做:
declare @id int;
select @id = id from table_name;
if (@id is not null)
print @id;
答案 1 :(得分:2)
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不是为了轻松打印查询结果而设计的 - 你可能最好还是返回结果集并让使用者打印结果。
答案 2 :(得分:0)
您只需要select id from mytable where color = 'red
这将返回颜色为红色的每个id。如果没有,那么您将在id列
中的数据集中获得一行