Eu tenho uma consulta que insere usando um select:
INSERT INTO courses (name, location, gid)
SELECT name, location, gid
FROM courses
WHERE cid = $cid
É possível selecionar apenas "nome, local" para a inserção e definir gid para outra coisa na consulta?
mysql
sql
insert-select
Kyle
fonte
fonte
OUTPUT
cláusula , que permite colocar o que você inseriu em outra tabela também. Eu não acho que o MySQL tenha um equivalente. Você pode criar uma tabela temporária , selecionar nessa tabela, preenchercourses
essa tabela e usar a tabela temporária para o que mais você precisar.Sim, ele é. Você pode escrever :
ou você pode obter valores de outra associação do select ...
fonte
Sintaxe correta: a ortografia selecionada estava incorreta
fonte
Claro, o que você quer usar para o gid? um valor estático, PHP var, ...
Um valor estático de 1234 pode ser como:
fonte
Acho que sua instrução INSERT está errada, consulte a sintaxe correta: http://dev.mysql.com/doc/refman/5.1/en/insert.html
edit: como Andrew já apontou ...
fonte
Claro que você pode.
No entanto, uma coisa deve ser observada: a
INSERT INTO SELECT
instrução copia os dados de uma tabela e os insere em outra tabela E exige que os tipos de dados nas tabelas de origem e destino correspondam. Se os tipos de dados de dados colunas da tabela não corresponde (ou seja, tentando inserirVARCHAR
emINT
, ouTINYINT
paraINT
) o servidor MySQL irá lançar umaSQL Error (1366)
.Por isso tem cuidado.
Aqui está a sintaxe do comando:
Nota lateral: existe uma maneira de contornar o problema de inserção de diferentes tipos de coluna usando a conversão em
SELECT
, por exemplo:Essa conversão (
CAST()
é sinônimo deCONVERT()
) é muito útil se suas tabelas tiverem conjuntos de caracteres diferentes na mesma coluna da tabela (que podem potencialmente levar à perda de dados se não forem tratadas adequadamente).fonte
A sintaxe correta para sua consulta é:
fonte