SQL Server:选择Top 0?

时间:2011-05-17 16:20:17

标签: sql sql-server sql-server-2005

我们刚刚在旧的生产存储过程中遇到过这种情况(这里还有很多内容,但这只是其逻辑的一个部分)。为什么有人会从表中选择前0行?这是某种我不熟悉的SQL黑客或技巧吗?

8 个答案:

答案 0 :(得分:45)

它是一种获得空集的方式;例如,创建一个新的空表,其列与现有的列相同;

SELECT TOP 0 * INTO new_table FROM old_table

或者作为列名的来源 或者作为返回列详细信息但没有数据到客户端层的方法
或者作为检查连接性的查询

与之相同;

SELECT * FROM table WHERE 0=1

答案 1 :(得分:26)

命名UNION ALL中的列

一定要阅读Alex K.的答案。他有很多我使用过的理由。这只是最明显的一个。

答案 2 :(得分:3)

通过这样做,您有一个空的结果集,包含所有列而不是没有结果。 如果使用存储过程的程序需要某些列,否则会崩溃。

答案 3 :(得分:2)

您可以使用它来获取列名称。

答案 4 :(得分:1)

使用它来创建一个临时表,其中DB和TEMPDB的排序规则可能不同。

$('#myTablet tr').on('click', function (e) {
    e.preventDefault();

    $(e.currentTarget).find('td').each(function(i,e) {
        console.info($(e).text();
    });
});

生成与我的表具有相同排序规则的临时表。这意味着

SELECT TOP(0) column INTO #temp FROM [mytable]

由于归类错误而失败。

答案 5 :(得分:0)

让我提供其他用途:

如果要在输出中而不是在消息中打印消息,则可以使用

select top 0 0 'Your message here'

代替

print 'Your message here'

答案 6 :(得分:0)

您可以使用它来检查SQL语法是否正确而不加载任何数据。

答案 7 :(得分:-1)

我在从现有数据库表创建临时表时主要使用它 - 没有任何数据。以下比使用top更可靠。

SELECT * FROM <table_name> LIMIT 0;