我想根据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)
怎么办?答案 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>