0

我无法找到正确的语法来完成这项工作?

我有一个包含 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 than insert
4

3 回答 3

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 不是为了轻松打印查询结果而设计的——你最好返回一个结果集并让消费者打印结果。

于 2013-09-11T21:58:30.453 回答
2

id 未定义。

存在子查询中的 id 在该子查询之外不存在。

你可以这样做:

declare @id int;
select @id = id from table_name;
if (@id is not null) 
    print @id;
于 2013-09-11T21:25:24.170 回答
0

您只需要select id from mytable where color = 'red

这将返回颜色为红色的每个 id。如果没有,那么您将在 id 列中获得数据集中的一行

于 2013-09-11T21:49:47.637 回答