2012-08-10 6 views
8

obserwuje wkładka na podstawie wybierz na jednej kolumnie możliwym w MySQLjest wkładka na podstawie wybierz na jednej kolumny w MySQL możliwe?

INSERT INTO student_fees(id, name, fees) 
VALUES(1, SELECT name from students where student_id = 1, 200$) 

Jeśli tak, to i przykładem będzie naprawdę pomóc.

-Dzięki

+0

[Manual MySQL] (http://dev.mysql.com/doc/refman/5.5/en/insert-select.html) stwierdza wyraźnie, że jest to możliwe. Jednak Twoja składnia jest błędna. – Jocelyn

Odpowiedz

9

Spróbuj INSERT...SELECT oświadczenie

INSERT INTO student_fees(id, name, fees) 
SELECT ... -- put here the SELECT STATEMENT with condition 

jeśli kolumna ID jest auto incremented, nie trzeba określić 1 albo będzie to spowodować wystąpienie błędu.

INSERT INTO student_fees(name, fees) 
SELECT `name`, '200$' 
FROM students   -- this will select all students on the table 
         -- and add $200 on thier fees. 

Inną kwestią jest to, czy chcesz tylko wstawić jedną kolumnę ze stołu student „s, trzeba yo określić warunek, więc nie dostaniesz wiązania błąd (zakładając identyfikator kolumna jest kluczem podstawowym)

INSERT INTO student_fees(name, fees) 
SELECT `name`, '200$' 
FROM students 
WHERE columnName = 'blahBlah' 

UPDATE 1

Widząc swój komentarz, musisz to zapytanie

INSERT INTO coupon_allotment (page_id, offer_id, coupon_code, user_id) 
SELECT page_id, 4, 'ABC'  -- number of columns mismatch, right? 
FROM pages_discounts_association 
WHERE discount_id = 4 

trzeba usunąć kolumnę user_id powyżej lub trzeba dodać się ID w select w celu dopasowania liczby kolumn.

+0

WSTAWIĆ NA limit strony kuponu (page_id, offer_id, kod kuponu, user_id) SELECT page_id, 4, 'ABC' FROM pages_discounts_association WHERE discount_id = 4 To jest moje aktualne zapytanie czy możesz to dla mnie poprawić? –

+0

to liczba kolumn niedopasowania. Właśnie zaktualizowałem moje zapytanie. Sprawdź, czy teraz działa. –

+0

Tak dziękuję za pomoc :) –

3

Wystarczy użyć zwykłej składni INSERT INTO ... SELECT i wybrać inne pola jako stałe w następujący sposób:

INSERT INTO student_fees(id, name, fees) 
SELECT 1, `name`, '200$' FROM students 
+0

nie działa następujące po faktyczne kwerendy: INSERT INTO 'kupon_allotment' (page_id, offer_id, kod kuponu, user_id) SELECT page_id, 4, 'ABC' FROM' pages_discounts_association' WHERE 'discount_id' = 4 –

+0

@ Abhishek Twoja tabela w rzeczywistym kwerendzie ma 4 kolumny (page_id, offer_id, coupon_code, user_id), podczas gdy w 'SELECT' właśnie masz 3. Musisz mieć tyle kolumn w' SELECT', ile masz w instrukcji 'INSERT' dla tego zapytania do pracy ! – Sirko

+0

@Abhishek: musi mieć taką samą liczbę pól w 'VALUES (...)' 'i SELECT'. W twoim przypadku: 4 pola, a następnie 3 pola. – Jocelyn

2

spróbuj tego:

INSERT INTO student_fees(id, name, fees) 
Select 1, name,'200$' from students 
Powiązane problemy