- Mysql select into не работает
- SELECT INTO и ошибка «Необъявленная переменная»
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Ответ 5
- Ответ 6
- Ответ 7
- Ответ 8
- Ответ 9
- Оператор SELECT не работает после INSERT INTO
- 2 ответа
- Не работает SELECT INTO
- SQL INSERT INTO: примеры вставки строк в таблицу БД MySQL
- Создадим тестовую таблицу
- Запрос на вставку строки
- Вставка без перечисления столбцов
- Вставка сразу нескольких строк с помощью INSERT INTO
- Как вставить значение из другой таблицы INSERT INTO . SELECT .
- Вставка из другой таблицы с условием INSERT INTO . SELECT . WHERE .
- Вставка в определенный раздел INSERT INTO . PARTITION .
- Вставка строк, некоторые из которых уже существуют в целевой таблице
- Игнорирование INSERT IGNORE INTO
- Вставка с заменой существующих значений REPLACE INTO
- Обновление некоторых полей, при существовании строк ON DUPLICATE KEY UPDATE
- Выражения для вставляемых значений в VALUES
- Приоритет вставки INSERT LOW_PRIORITY / HIGH_PRIORITY
Mysql select into не работает
Привет всем!
Подскажите плз, почему не работает sql запрос типа select . into в Tquery?
И еще . Какой тип данных надо использовать для занесения туда даты и времени? Типа SQL-евского TIMESTAMP?
Почему-то записи типа DECLARE VARIABLE DAT_TO TIMESTAMP;
он тоже воспринимать не хочет. =((
← →
ANB © ( 2006-10-25 17:28 ) [1]
> DECLARE VARIABLE DAT_TO TIMESTAMP;
А парадокс такое понимать должен ?
А смысл в select into в парадоксе ? Или его обучили pl/sql блоки выполнять ?
← →
Johnmen © ( 2006-10-25 17:29 ) [2]
> Подскажите плз, почему не работает sql запрос типа select
> . into в Tquery?
Нам отсюда не видно, что не работает. Поэтому предполагаю, что работает. )
>он тоже воспринимать не хочет. =((
Нам отсюда не видно, что не хочет. Поэтому предполагаю, что хочет. )
← →
Despo ( 2006-10-25 17:37 ) [3]
ну мне надо значение, полученное в результате выборки select . from . where . записать в какую-либо переменую. Я же могу это как-то сделать? Я пытался осуществить это с помощью select into но вот товарищ ANB говорит что PARADOX это не понимает. А как тогда?
← →
Stanislav © ( 2006-10-25 17:39 ) [4]
В таблицу можна, помоему.
Insert into table
Select * from
патамучта локалsql наверное не поддерживает конструкцию.
← →
Desdechado © ( 2006-10-25 17:53 ) [6]
Query.SQL.Text:=»SELECT fldname FROM tablename»;
Query.Open;
tvoya_peremennaja:=Query.Fields[0].AsString;
← →
Desdechado © ( 2006-10-25 17:56 ) [7]
Despo (25.10.06 17:24)
Ты путаешь переменные, которые обрабатывает сервер (они именованные и могут быть созданы, но не в парадоксе), с переменными, о которых знает твоя программа (они в нее вкомпилированы). Так вот — эторазные переменные. Сервер не знает о вкомпилированных в твою EXE переменных, а твой EXE не знает о переменных, обрабатываемых сервером.
Обмениваться они могут только командами и наборами данных.
Переменные не относятся ни к командам, ни к наборам данных. Это другая сущность.
← →
ANB © ( 2006-10-25 18:00 ) [8]
> Обмениваться они могут только командами и наборами данных.
и еще через параметры можно прокачивать. но в случае с парадоксом я не уверен, что это сработает. Так что читай [6, 7] и кучу умных книжек.
← →
Despo ( 2006-10-25 18:30 ) [9]
> почему не работает sql запрос типа select . into в Tquery
А должно, ответ — не должно.
Источник
SELECT INTO и ошибка «Необъявленная переменная»
Когда я пытаюсь выполнить следующий запрос:
Я получаю сообщение об ошибке:
# 1327 — Необъявленная переменная: newsletter_to_send
Что не так с этим запросом?
ОТВЕТЫ
Ответ 1
PS: вы уверены, что в разделе WHERE не требуется?
Ответ 2
MySQL не поддерживает синтаксис SELECT . INTO . .
Для выполнения этого нужно использовать синтаксис INSERT INTO . SELECT .. .
Ответ 3
Я думаю, вы можете следовать моему устному пути и, надеюсь, вы сможете исправить свою проблему.
Сначала используйте эту команду sql для создания новой таблицы, в которую вы хотите сделать резервную копию
После этого вы можете использовать эту команду для копирования этих данных
Если у вас уже есть предыдущие данные в таблице назначения, Во-первых, вы можете использовать эту команду
Спасибо Мадхут Хоссейн
Ответ 4
Ответ 5
MySQL не поддерживает SELECT INTO [table] . Он поддерживает только SELECT INTO [variable] и может выполнять только одну переменную за раз.
Что вы можете сделать, однако используйте синтаксис CREATE TABLE с SELECT следующим образом:
Ответ 6
Я пробовал работать над этим только сейчас, и это работает для меня:
Ответ 7
MySQL Server не поддерживает SELECT. INTO TABLE Расширение Sybase SQL. Вместо этого MySQL Server поддерживает стандартный синтаксис SQL INSERT INTO. SELECT, что в основном одно и то же. См. Раздел 12.2.5.1, «INSERT. SELECT Syntax».
Ответ 8
MySQL не поддерживает синтаксис SELECT. INTO.
если это новая таблица, используйте синтаксис CREATE TABLE. SELECT.
Ответ 9
MySQL не поддерживает SELECT INTO [table] . Он поддерживает только SELECT INTO [variable] и может выполнять только одну переменную за раз.
Однако вы можете использовать синтаксис CREATE TABLE с SELECT следующим образом:
Источник
Оператор SELECT не работает после INSERT INTO
Итак, я закончил свой первый год программирования, поэтому я немного знаю о SQL, но я не могу найти решение / объяснение этой проблемы. Я знаю, что вы можете выполнять заявления после друг с другом; но когда я пытаюсь сделать это после вставки в оператор [table], это не работает для меня. Я пробовал это до сих пор:
Я всегда получаю сообщение о том, что первая точка с запятой неверна. Действительно был бы признателен, если бы кто-то мог объяснить, почему это происходит так. Также это делает только оператор SELECT или каждая команда после INSERT INTO
ОП опубликовал это изображение определения таблицы в качестве ответа. Просто добавьте это здесь ради всех.
РЕДАКТИРОВАТЬ 2: Я только использовал эти значения в качестве примера, они не были фактическими значениями, которые я использовал в своем запросе, но теперь я обновил их с реальными значениями, но это не имеет никакого значения .
2 ответа
Я знаю, что вы можете выполнять заявления после друг с другом;
Как вы обнаружили, нет, вы не можете.
В Oracle есть два языка, которые нужно разделять. SQL, как то, что вы делаете, и PL / SQL, используемый в пакетах, функциях, анонимных блоках PL / SQL, триггерах и т. Д.
В PL / SQL точка с запятой — это терминатор оператора, и его можно использовать в середине строки, чтобы поместить в строку более одного оператора, так же, как в обычных языках.
В SQL Oracle точка с запятой недопустима . Что сбивает с толку, так это то, что инструменты client , такие как SQLPlus, используют точку с запятой в конце строки в качестве ограничителя для операторов SQL, но эта точка с запятой удаляется перед оператором отправляется на сервер базы данных. Клиент отвечает за разделение операторов SQL перед их анализом сервером. Многие другие инструменты следуют примеру SQL * Plus в использовании точки с запятой.
Итак, SQL * PLus, видя insert , говорит сам себе «оператор SQL» и затем читает, пока строка не заканчивается точкой с запятой. Затем он отправляет то, что прочитал минус точку с запятой на сервер базы данных, чтобы выполнить SQL-оператор single . Парсер SQL Oracle не знает, что делать с внутренней точкой с запятой и дросселями.
Обратите внимание, что в SQLPlus можно изменить терминатор оператора SQL с помощью set sqlterminator . , но я редко видел, чтобы это делалось на практике.
Удалите предложение значений и точку с запятой между тем, что выглядит как два оператора, и оператор должен выглядеть так:
Источник
Не работает SELECT INTO
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Не работает Select
почему не работает инструкция селект? не могу добавить столбцы в таблице в схеме данных Visual.
не работает SELECT FROM WHERE
Проблема: элементарный скрипт не хочет работать. 4
SQL выводит 1 результат к примеру число 314
а PL/SQL говорит NO_DATA_FOUND
Пробовал писать в других пакетах, новые создавать, так же в явных/неявных курсорах. Пробовал разные a.idcardfield и a.idcard использовать. все бесполезно.
Хотя при этом существуют другие функции которые работают с этой таблицей и все отлично.
Версия ORacle 9.2 насколько помню )))
Добавлено через 10 минут
И думаю нет смысла проверять запрос и думать о нем, его условиях и т.п.
Прошу рассматривать сам принцип обращения к таблице SELECT INTO в PL/SQL.
Подозреваю что проблема либо в кэше таблицы или БД самой.. бог его знает. я не знаю как там оно вертится и крутится, мое дело запросы писать )))) и запрос точно правильный. Не работает только при обращении к этой таблице, с остальными подобный запрос работает без проблем.
Добавлено через 3 минуты
Если «видимо-известных» причин нет, то тогда удалите тему, чтоб хлама не было.
Просто если проблема не в БД не может быть, тогда в софте что работает с БД и его не изменить, т.к. нет исходников.
Просто решил тут задать вопрос, т.к. исходник софта недоступен а значит я беспомощен, вдруг бывала такая проблема.
Источник
SQL INSERT INTO: примеры вставки строк в таблицу БД MySQL
SQL оператор INSERT используется для вставки записей в существующую таблицу.
Синтаксис этого оператора следующий:
Создадим тестовую таблицу
Давайте создадим таблицу table1 со столбцами a, b, c в нашей MySQL базе данных:
Запрос на вставку строки
Простой запрос, который вставляет строку со столбцами 111, 222 и 333 выглядит так:
Еще один способ сделать то же самое:
Столбцы, которые вы не перечислите заполняются значениями по умолчанию, которые вы предусматриваете при создании таблицы, даже если это просто NULL.
У таблиц обычно есть поле id с первичным ключом (PRIMARY KEY) таблицы. Если этому полю установлено значение AUTOINCREMENT т.е. оно заполняется автоматически, то в таком случае вы не должны его перечислять в списке столбцов оператора INSERT.
Вставка без перечисления столбцов
Если количество значений, которые мы вставляем = количеству столбцов в таблице, то можно не перечислять столбцы, и наш запрос может выглядеть так:
Этот способ крайне не рекомендуется. Дело в том, что со временем вы можете менять таблицы, например добавлять в них новые столбцы, а это значит, что все запросы записанные таким способом просто перестанут работать и вам придется менять их по всему вашему приложению. Поэтому, навсегда забываем этот способ. Я его привел, только чтобы вы так не делали.
Вставка сразу нескольких строк с помощью INSERT INTO
Если нам нужно вставить несколько строк, то мы просто перечисляем группы значений через запятую выглядит это так:
Таким образом мы вставили 3 строки в нашу таблицу table1. Их может быть и больше. В MySQL четкого предела нет, однако он все таки существует и зависит от параметра max_allowed_packet который ограничивает размер запроса. Если вы установите SET GLOBAL max_allowed_packet=524288000; то размер запроса будет ограничен 500MB но делайте это в очень крайнем случае. Обычно всегда можно найти решение и разделить 1 большой запрос, на несколько более мелких и вставлять например не больше 1000 строк за один цикл.
Как вставить значение из другой таблицы INSERT INTO . SELECT .
Допустим у нас есть еще одна таблица table2 которая по структуре точно такая же как и первая. Нам в таблицу table2 нужно вставить все строки из table1.
Вставляем значения из table1 в таблицу table2:
Вам следует позаботиться об уникальности ключей, если они есть в таблице, в которую мы вставляем. Например при дублировании PRIMARY KEY мы получим следующее сообщение об ошибке:
Если вы делаете не какую-то единичную вставку при переносе данных, а где-то сохраните этот запрос, например в вашем PHP скрипте, то всегда перечисляйте столбцы.
Как не рекомендуется делать (без перечисления столбцов):
Если у вас со временем изменится количество столбцов в таблице, то запрос перестанет работать. При выполнении запроса MySQL в лучшем случае просто будет возвращать ошибку:
Либо еще хуже: значения вставятся не в те столбцы.
Вставка из другой таблицы с условием INSERT INTO . SELECT . WHERE .
А теперь представим, что нам нужно вставить только те строки из table1, у которых столбец «c» равен 333. Тогда наш запрос будет выглядеть так
То есть мы просто вставляем данные в таблицу, которые выбрали из другой таблицы при помощи обычного SELECT запроса
Теперь представим, что у нас в таблице table2 — 4 столбца, а в table1 — 3. При этом четвертый столбец в table2 обязательный. Чтобы выйти из этой ситуации, нужно передать какое-нибудь подходящее значение в этот лишний столбец. У нас чисто абстрактная задача, поэтому давайте передадим туда просто единицу.
Теперь в столбец d у нас записалась единица и проблема решена.
Вставка в определенный раздел INSERT INTO . PARTITION .
Если вам нужно вставить строки в определенный раздел таблицы, то нужно после таблицы указать PARTITION (название раздела), например так:
Вставка в несколько разделов. Первая строка вставляется в раздел p1, а вторая в p2
Вставка строк, некоторые из которых уже существуют в целевой таблице
Существование строк определяется по значению уникальных ключей. В зависимости от ситуации мы можем выбрать разные способы поведения при совпадении значений уникальных столбцов.
Игнорирование INSERT IGNORE INTO
Например если мы вставляем строку с PK = 1, и при этом в таблице уже есть PK = 1 то MySQL выдаст ошибку:
Выполнение запроса на этом прервется, однако нам в некоторых случаях хотелось бы просто вставить данные, игнорируя ошибки. В этом нам поможет INSERT IGNORE INTO:
Просто добавляем IGNORE в наш запрос и ошибки будут игнорироваться
Вставка с заменой существующих значений REPLACE INTO
REPLACE работает также INSERT, но если совпадают уникальные ключи, то старая строка (или строки!) удаляется до вставки новой.
В таком случае наш пример выглядит следующим образом:
Обновление некоторых полей, при существовании строк ON DUPLICATE KEY UPDATE
При совпадении ключей, мы можем также заменить некоторые или все поля в строке.
Наш запрос будет выглядеть так:
В данном примере если у нас какой-то уникальный ключ совпадает, то мы не производим вставку, а обновляем существующую строку или строки путем присваивания столбцу «c» значения, которое у нас перечислено в VALUES.
Иными словами, если ключ совпадает, то мы просто обновим данные столбца «с» а остальные столбцы трогать не будем.
Иногда нам нужно при совпадении ключей обновить все значения. Этом можно сделать просто перечислив все столбцы:
При обновлении столбцов мы также можем использовать разные выражения, например:
Выражения для вставляемых значений в VALUES
При вставке значений, мы можем использовать выражения и даже использовать в своих выражениях значения других столбцов.
Пример использования выражений:
Таким образом мы для формирования столбца «c» использовали столбцы «a» и «b».
Приоритет вставки INSERT LOW_PRIORITY / HIGH_PRIORITY
Установление приоритета нужно для решение проблем с конкурентными вставками. При вставках происходит блокировка строк и если 2 INSERT запроса требуют блокировки одних и тех же строк, для своего выполнения, то иногда может потребоваться повысить или понизить приоритет некоторых запросов, по отношению к другим. Это можно сделать указав приоритет LOW_PRIORITY или HIGH_PRIORITY
Наш запрос будет выглядеть так для LOW_PRIORITY:
Источник