2012-03-26 8 views
0

Ich muss die folgende Abfrage schreiben, so dass das Feld "att" immer eine Konstante ist.mysql ist diese Abfrage möglich?

INSERT INTO index(id,val,att) (SELECT ID,val FROM product), 14; 

"14" ist eine Konstante

wie würde ich es schreiben, wenn überhaupt möglich?

Antwort

4
INSERT INTO `index`(id,val,att) SELECT id,val,14 FROM product 

Index ist kein sehr guter Name für eine Tabelle btw ... Sie können einfachen Anführungszeichen verwenden (`) es zu entkommen, aber besser einen anderen Namen abholen.

+0

Ich weiß, dieser Name ist nicht einmal möglich, ich denke, – nick

+1

WERTE ist nicht erforderlich bei INSERT ... SELECT und die Auswahl muss nicht in Parens sein. – Ilion

+0

oh danke! es funktioniert auch ohne WERTE. Vielen Dank für die schnelle Antwort! – nick

1

Sie könnten so:

INSERT INTO `index` (id,val,att) 
SELECT ID,val,14 FROM product 
2

Fügen Sie einfach die Konstante in der SELECT Anweisung

INSERT INTO `index`(id, val, att) (SELECT ID, val, 14 FROM product); 
0
INSERT INTO index(id,val,att) VALUES (SELECT id,val,14 FROM product) 

Probieren Sie es

1

Sie können einfach eine Nummer wählen, und es wird ist zurückgekommen. Dies sollte funktionieren:

INSERT INTO `index`(id,val,att) SELECT ID,val,14 FROM product; 

Hinweise:

  1. Sie tun NICHT für INSERT die Werte Schlüsselwort benötigen .. SELECT Aussagen.
  2. Wie eine andere Person erwähnt, Index ist kein großer Tabellenname, da es ein reserviertes Wort ist.
1
INSERT INTO `Index`(id, val, att) 
SELECT ID, val, 14 
FROM Product 
0

INSERT INTO table_name (id, val, att) SELECT ID, val, 14 FROM Produkt

Dont Tabellennamen wie Index verwenden, und es ist nicht nötig() in wählen Sie aus der Tabelle.

Verwandte Themen