SQL: выделите много записей в новую таблицу - PullRequest
0 голосов
/ 24 марта 2009

Я хочу выбрать не менее 20 записей из таблицы в новую таблицу с номерами от 1 до 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'

Извините. Дайте мне посмотреть, смогу ли я сделать это более ясным. В основном я хочу выбрать 20 записей на основе fubar = 1 до 20. Я пытался использовать «и где», но я получаю синтаксическую ошибку.

eidt: что если fubar - это nvarchar (11)

Ответы [ 8 ]

6 голосов
/ 24 марта 2009
SELECT * INTO blah FROM foo WHERE fubar BETWEEN 1 AND 20
6 голосов
/ 24 марта 2009

Если ваше первое имя таблицы - "foo" и новое имя таблицы "бла"

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

или

SELECT * INTO blah FROM foo WHERE fubar >= 1 AND fubar <=20
1 голос
/ 24 марта 2009

Два сырых метода, включающие изменение предложения where:

Если fubar - числовой столбец, попробуйте где fubar> 0 и fubar <20 если fubar - символьный столбец, попробуйте где fubar in ('1', '2', '3', ... '19', '20') </p>

Я уверен, что есть более эффективные методы, которые являются общими, но это может помочь вам в определенных обстоятельствах.

0 голосов
/ 23 июня 2011

Если fubar действительно от 1 до 20 целых чисел (или другого типа чисел), но хранится в nvarchar (), тогда я бы использовал BETWEEN, как говорит @TStamper, и как @Russ Cam предложил с CAST (fubar как Int), если вы в MSSQL или MySQL.

Не понимаю, что ты имеешь в виду, но ... если, когда вы говорите, что fubar может быть nvarchar, и вы действительно хотите иметь проверенные нечисловые значения, вероятно, понадобится IN ('1', 'x', '5679fjdk' и т. д.).

0 голосов
/ 24 марта 2009

Измените «И» на «ИЛИ»:

select * into blah 
from foo 
where fubar = 1 
OR fubar = 2 
OR fubar = 3
0 голосов
/ 24 марта 2009

Это зависит от базы данных, которую вы используете. Для 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
0 голосов
/ 24 марта 2009

Вы смотрите, просто вставляя 20 лучших записей?

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

Есть также много способов, которыми вы можете параметризовать предложение TOP (примеры приведены для SQL Server).

EDIT:

В ответ на ваше обновление, если столбец 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

0 голосов
/ 24 марта 2009
select top 20 * into blah from foo where fubar = '1'

Я не совсем уверен, о чем ты спрашиваешь.

EDIT:

select top 20 * into blah from foo where fubar IN ('1','2',...'20')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...