SQL:在新表中选择许多记录

时间:2009-03-23 22:27:54

标签: sql

我想根据1到20的数字从表中选择至少20条记录到新表中。

select * into blah from foo where fubar = '1'

如何在该声明中添加1到20?

编辑:

select * into blah from foo where fubar = '1' and where fubar = '2' and where fubar = '3'

对不起。让我看看我能否说得更清楚。基本上我想基于fubar = 1到20选择20条记录。我试图使用“和where”但我得到语法错误。

eidt:如果fubar是nvarchar(11)

怎么办?

8 个答案:

答案 0 :(得分:6)

如果您的第一个桌面名称为“foo”且新表格名称为“blah”

SELECT * INTO blah FROM foo WHERE fubar BETWEEN 1 AND 20

SELECT * INTO blah FROM foo WHERE fubar >= 1 AND fubar <=20

答案 1 :(得分:6)

SELECT * INTO blah FROM foo WHERE fubar BETWEEN 1 AND 20

答案 2 :(得分:1)

两种俗气的方法都涉及改变where子句:

如果fubar是一个数字列,请尝试fubar&gt; 0和fubar&lt; 20 如果fubar是一个字符列,请尝试fubar in('1','2','3',...'19','20')

我确信有更多有效的方法是一般的,但这可能会帮助你在特定情况下。

答案 3 :(得分:0)

select top 20 * into blah from foo where fubar = '1'

我不确定你在问什么。

编辑:

select top 20 * into blah from foo where fubar IN ('1','2',...'20')

答案 4 :(得分:0)

您只想插入前20条记录吗?

SELECT TOP 20 *
INTO
    blah
FROM
    foo
WHERE
    fubar = '1'

您也可以通过多种方式parameterize the TOP clause(示例适用于SQL Server)。

修改

为了响应您的更新,如果fubar列是数字,那么它只是

SELECT * INTO blah FROM foo WHERE fubar BETWEEN 1 AND 20

如果fubar是一个字符字段但只包含数字,那么你可以将字段转换为Integer并仍然使用BETWEEN子句

SELECT * INTO blah FROM foo WHERE CAST(fubar AS INT) BETWEEN 1 AND 20

这适用于SQL Server

答案 5 :(得分:0)

这取决于您使用的数据库。 对于MS SQL Server,它将是

SELECT TOP 20 * into blah from foo order by fubar

对于Oracle

SELECT * into blah from foo  order by fubar where rownum()<=20

答案 6 :(得分:0)

将'AND'更改为'OR':

select * into blah 
from foo 
where fubar = 1 
OR fubar = 2 
OR fubar = 3

答案 7 :(得分:0)

如果fubar实际上是1到20整数(或其他数字类型),但存储在nvarchar()中,那么我会像@TStamper那样使用BETWEEN和@Russ Cam建议使用CAST(fubar as Int),如果你在MSSQL或MySQL。

Unlikey你的意思,但......  如果你说fubar可能是一个nvarchar,并且你真的想要测试非数字值,那么可能需要IN('1','x','5679fjdk'等...)。 / p>