… අගයන් තුළට ඇතුළු කරන්න (තෝරන්න… සිට…)


1451

මම INSERT INTOවෙනත් වගුවකින් ආදානය භාවිතා කරමින් වගුවකට උත්සාහ කරමි . බොහෝ දත්ත සමුදා එන්ජින් සඳහා මෙය සම්පුර්ණයෙන්ම කළ හැකි වුවද SQL, දවසේ එන්ජිම සඳහා නිවැරදි වාක්‍ය ඛණ්ඩය ( MySQL , Oracle , SQL Server , Informix , සහ DB2 ) මතක තබා ගැනීමට මම නිතරම වෙහෙසෙන බව පෙනේ .

යටින් පවතින දත්ත සමුදාය ගැන කරදර නොවී අගයන් ඇතුළු කිරීමට මට ඉඩ සලසන SQL ප්‍රමිතියෙන් (නිදසුනක් ලෙස, SQL-92 ) රිදී-උණ්ඩ සින්ටැක්ස් තිබේද?


1
මෙම උදාහරණය ක්‍රියාත්මක වේ: tag_zone තෝරන්න @ tag, zoneid, GETDATE (), @ positiong.STIntersects (polygon) කලාපයෙන්
Uğur Gümüşhan

Answers:


1629

උත්සාහ කරන්න:

INSERT INTO table1 ( column1 )
SELECT  col1
FROM    table2  

මෙය සම්මත ANSI SQL වන අතර ඕනෑම DBMS මත වැඩ කළ යුතුය

එය අනිවාර්යයෙන්ම ක්‍රියාත්මක වන්නේ:

  • ඔරකල්
  • MS SQL සේවාදායකය
  • MySQL
  • Postgres
  • SQLite v3
  • ටෙරඩාටා
  • ඩීබී 2
  • සයිබේස්
  • වර්ටිකා
  • HSQLDB
  • එච් 2
  • AWS RedShift
  • SAP හැනා

968

ක්ලෝඩ් හූල්ගේ පිළිතුර : හොඳින් ක්‍රියාත්මක විය යුතු අතර, ඔබට තීරු සහ වෙනත් දත්ත ද තිබිය හැකිය:

INSERT INTO table1 ( column1, column2, someInt, someVarChar )
SELECT  table2.column1, table2.column2, 8, 'some string etc.'
FROM    table2
WHERE   table2.ID = 7;

මම මෙම සින්ටැක්ස් එක භාවිතා කර ඇත්තේ ප්‍රවේශය, SQL 2000/2005 / එක්ස්ප්‍රස්, MySQL, සහ PostgreSQL සමඟ පමණි, එබැවින් ඒවා ආවරණය කළ යුතුය. එය SQLite3 සමඟ ද ක්‍රියා කළ යුතුය.


1
තත්වය වගු 2 රටකට වෙනස් වී පේළි ගණන එකකට වඩා වැඩි නම් කුමක් කළ යුතුද? මට මෙවැනිම ගැටලුවක් තිබේ: stackoverflow.com/questions/36030370/…
විජයරාන

1
පේළි එකකට වඩා ඇතුළත් කිරීමේ ගැටලුවක් නොතිබිය යුතුය.
rinukkusu

අපි මේසයේ සියලුම තීරු වලට ඇතුල් කිරීම අත්‍යවශ්‍යද
maheshmnj

1
@maheshmnj නැත, NULL ලෙස සකසා ඇති තීරු පමණක් සහ පෙරනිමි අගයක් ඇතුළත් කිරීම අවශ්‍ය නොවේ, වෙනත් ඕනෑම තීරු ඒවායේ පෙරනිමි අගයන්ට සකසනු ඇත හෝ NULL
travis

153

INSERTවෙනත් වගුවකින් බහු අගයකින් එක් අගයක් පමණක් ලබා ගැනීම සඳහා මම SQLite3 හි පහත සඳහන් දේ කළෙමි:

INSERT INTO column_1 ( val_1, val_from_other_table ) 
VALUES('val_1', (SELECT  val_2 FROM table_2 WHERE val_2 = something))

4
පැහැදිලි කිරීම සඳහා පමණි: මෙය SQLite3 සඳහා වැරදිය. අනුව ලේඛගතකිරීම , සඳහා මූලාශ්රය දත්ත INSERTවේ එක්කෝ VALUES හෝ SELECTප්රකාශයක් නොව දෙකම.

2
ප්‍රලේඛනය එය ලැයිස්තුගත නොකරන බව සත්‍යයකි, නමුත් එය ක්‍රියාත්මක වේ. කෙසේ වෙතත්, සාරධර්ම වෙනුවට තෝරාගත් ප්‍රකාශය භාවිතා කිරීමෙන් එය වඩාත් කියවිය හැකි යැයි මම සිතමි.
බන්ජොකාට්

2
පේළියක් තුළ අගයක් නියම කිරීම සඳහා එය ක්‍රියා කරයි, නමුත් වඩාත් සාමාන්‍ය අවස්ථාව සඳහා පේළි ගොඩක් අවශ්‍ය වේ.
ලුචොස්ටයින්

Val_1 පේළි හරහා වෙනස් නොවේ නම්, පහත දැක්වෙන වාක්‍ය ඛණ්ඩය SQLite3 හි ක්‍රියාත්මක විය හැකිද? 'foo' තෝරන්න, some_table වෙතින් some_column - SQLServer 2014 හි ක්‍රියා කරයි
Chris B

ප්‍රලේඛනය මෙය ලැයිස්තු ගත කරයි (දැන්?): මෙම වාක්‍ය ඛණ්ඩය INSERT INTO ... VALUES ([expr], [expr], ...)සහ එහි ඇති එක් මාර්ගයක් [expr]නම් {{NOT} EXISTS} ([select-stmt])- තෝරාගත් ප්‍රකාශය වටා ඇති පරාමිතිය අවශ්‍ය බව සලකන්න ( {}විකල්ප අර්ථය)
zapl

64

මා දකින පිළිතුරු දෙකම ඉන්ෆොමික්ස් හි විශේෂයෙන් හොඳින් ක්‍රියාත්මක වන අතර මූලික වශයෙන් සම්මත SQL වේ. එනම්, අංකනය:

INSERT INTO target_table[(<column-list>)] SELECT ... FROM ...;

ඉන්ෆෝමික්ස් සමඟ හොඳින් ක්‍රියා කරන අතර, සියලු ඩී.බී.එම්.එස්. . අත්‍යවශ්‍ය නමුත් ඉලක්ක තීරු අනුපිළිවෙලින් දක්වයි, එබැවින් SELECT හි ප්‍රති result ලයේ පළමු තීරුව පළමු ලැයිස්තුගත තීරුවට යයි. ආදිය තීරු ලැයිස්තුව නොමැති විට, SELECT හි ප්‍රති result ලයේ පළමු තීරුව ඉලක්ක වගුවේ පළමු තීරුව.

පද්ධති අතර වෙනස් විය හැක්කේ විවිධ දත්ත සමුදායන්හි වගු හඳුනා ගැනීම සඳහා භාවිතා කරන අංකනයයි - ප්‍රමිතියට අන්තර්-දත්ත සමුදාය (අන්තර්-ඩීබීඑම්එස් පමණක් නොව) මෙහෙයුම් ගැන කීමට කිසිවක් නැත. Informix සමඟ, ඔබට වගුවක් හඳුනා ගැනීමට පහත අංකනය භාවිතා කළ හැකිය:

[dbase[@server]:][owner.]table

එනම්, ඔබට දත්ත සමුදායක් නියම කළ හැකිය, එම දත්ත සමුදාය වත්මන් සේවාදායකයේ නොමැති නම් විකල්පයක් ලෙස හඳුනා ගැනීම, පසුව විකල්ප හිමිකරු, තිත සහ අවසානයේ සත්‍ය වගුවේ නම. SQL ප්‍රමිතිය ඉන්ෆොමික්ස් හිමිකරු ලෙස හඳුන්වන දේ සඳහා ස්කීමා යන පදය භාවිතා කරයි. මේ අනුව, ඉන්ෆොමික්ස් හි, පහත දැක්වෙන ඕනෑම අංකනයකට වගුවක් හඳුනාගත හැකිය:

table
"owner".table
dbase:table
dbase:owner.table
dbase@server:table
dbase@server:owner.table

පොදුවේ අයිතිකරු උපුටා දැක්වීම අවශ්‍ය නොවේ; කෙසේ වෙතත්, ඔබ උපුටා දැක්වීම් භාවිතා කරන්නේ නම්, ඔබට හිමිකරුගේ නම නිවැරදිව අක්ෂර වින්‍යාසය ලබා ගත යුතුය - එය සිද්ධි සංවේදී බවට පත්වේ. එනම්:

someone.table
"someone".table
SOMEONE.table

සියල්ලම එකම වගුව හඳුනා ගනී. Informix සමඟ, MODE ANSI දත්ත සමුදායන් සමඟ මෘදු සංකූලතාවයක් ඇති අතර, එහි හිමිකරුගේ නම් සාමාන්‍යයෙන් ඉහළ අකුරක් බවට පරිවර්තනය වේ (ඉන්ෆොමික්ස් යනු ව්‍යතිරේකයයි). එනම්, MODE ANSI දත්ත ගබඩාවක (බහුලව භාවිතා නොවේ), ඔබට ලිවිය හැකිය:

CREATE TABLE someone.table ( ... )

පද්ධති නාමාවලියෙහි හිමිකරුගේ නම 'යමෙකු' වෙනුවට "යමෙක්" වේ. ඔබ අයිතිකරුගේ නම ද්විත්ව මිල ගණන් යටතේ කොටු කරන්නේ නම්, එය වෙන් කළ හඳුනාගැනීමක් ලෙස ක්‍රියා කරයි. සම්මත SQL සමඟ, වෙන් කළ හඳුනාගැනීම් බොහෝ ස්ථාන භාවිතා කළ හැකිය. ඉන්ෆෝමික්ස් සමඟ, ඔබට ඒවා භාවිතා කළ හැක්කේ අයිතිකරුගේ නම් වටා පමණි - වෙනත් සන්දර්භය තුළ, ඉන්ෆෝමික්ස් තනි-උපුටා ගත් නූල් නූල් ලෙස ද ද්විත්ව උපුටා ගත් නූල් වෙන්කර හඳුනාගැනීම් ලෙස වෙන් කරනවාට වඩා තනි-උපුටා ගත් හා ද්විත්ව-උපුටා ගත් නූල් නූල් ලෙස සලකයි. (ඇත්ත වශයෙන්ම, සම්පූර්ණත්වය සඳහා, පරිසර විචල්‍යයක් ඇත, DELIMIDENT, ඕනෑම අගයකට සැකසිය හැකිය, නමුත් Y ආරක්ෂිතයි - ද්විත්ව උපුටා දැක්වීම් සෑම විටම වෙන් කරන ලද හඳුනාගැනීම් වටා ඇති බවත් තනි උපුටා දැක්වීම් සෑම විටම නූල් වටා ඇති බවත් දැක්වීමට.)

MS SQL සේවාදායකය වර්ග වරහන් තුළ කොටා ඇති [වෙන් කරන ලද හඳුනාගැනීම්] භාවිතා කිරීමට කළමනාකරණය කරන බව සලකන්න. එය මට අමුතු පෙනුමක් ඇති අතර එය නිසැකවම SQL ප්‍රමිතියේ කොටසක් නොවේ.


41

පළමු පිළිතුරෙහි යමක් එකතු කිරීම සඳහා, අපට වෙනත් වගුවකින් වාර්තා කිහිපයක් පමණක් අවශ්‍ය වූ විට (මෙම උදාහරණයේ ඇත්තේ එකක් පමණි):

INSERT INTO TABLE1
(COLUMN1, COLUMN2, COLUMN3, COLUMN4) 
VALUES (value1, value2, 
(SELECT COLUMN_TABLE2 
FROM TABLE2
WHERE COLUMN_TABLE2 like "blabla"),
value4);

4
මෙම ප්‍රවේශය අදාළ වන්නේ එක් තීරුවක් පමණක් තෝරාගෙන ඇති එවැනි අනුකාරක සඳහා පමණි. බහුවිධ තීරු උපවගන්තියක දී, දෝෂයක් 'උපවගන්තිය ආපසු ලබා දිය යුත්තේ එක් තීරුවක් පමණි'. @ ට්‍රැවිස්ගේ පිළිතුර පිළිගන්න.
snowfox

34

බොහෝ දත්ත සමුදායන් මූලික වාක්‍ය ඛණ්ඩය අනුගමනය කරයි,

INSERT INTO TABLE_NAME
SELECT COL1, COL2 ...
FROM TABLE_YOU_NEED_TO_TAKE_FROM
;

මම භාවිතා කර ඇත සෑම දත්ත එනම් මෙම කාරක රීති අනුගමනය DB2, SQL Server, MY SQL,PostgresQL


34

විමසුමේ VALUESකොටසක් වෙනුවට, පහත පරිදි විමසුම INSERTභාවිතා කරන්න SELECT.

INSERT INTO table1 ( column1 , 2, 3... )
SELECT col1, 2, 3... FROM table2

34

තෝරාගත් උප විමසුම සමඟ ඇතුළත් කිරීම සඳහා ප්‍රවේශයන් දෙකක්.

  1. SELECT උපවගන්තිය සමඟ එක් පේළියක් සමඟ ප්‍රති results ල ලබා දේ .
  2. SELECT උපවගන්තිය සමඟ බහු පේළි සමඟ ප්‍රති results ල ලබා දේ .

1. එක් පේළියක් සමඟ SELECT උපවිශේෂ නැවත ලබා දීමේ ප්‍රති results ල සමඟ ප්‍රවේශය .

INSERT INTO <table_name> (<field1>, <field2>, <field3>) 
VALUES ('DUMMY1', (SELECT <field> FROM <table_name> ),'DUMMY2');

මෙම අවස්ථාවෙහිදී, එය උපකල්පනය කරන්නේ SELECT උප විමසුම මඟින් WHERE තත්වය හෝ SUM, MAX, AVG වැනි SQL සමස්ථ ක්‍රියාකාරකම් මත පදනම්ව ප්‍රති result ල පේළියක් පමණක් ලබා දෙන බවයි. එසේ නොවුවහොත් එය දෝෂයක් වනු ඇත

2. පේළි කිහිපයකින් SELECT උපවිශේෂ නැවත ලබා දීමේ ප්‍රති results ල සමඟ ප්‍රවේශය .

INSERT INTO <table_name> (<field1>, <field2>, <field3>) 
SELECT 'DUMMY1', <field>, 'DUMMY2' FROM <table_name>;

දෙවන ප්රවේශය අවස්ථා දෙකම සඳහා ක්රියා කරනු ඇත.


30

INSERT INTOඔබ කොටසෙහි ඇති සියලුම තීරු සඳහා අගයන් සපයන්නේ නම් කොටසෙහි තීරු සඳහන් නොකර මෙය කළ හැකිය SELECT.

වගුව 1 හි තීරු දෙකක් ඇතැයි කියමු. මෙම විමසුම ක්‍රියාත්මක විය යුතුය:

INSERT INTO table1
SELECT  col1, col2
FROM    table2

මෙය col2ක්‍රියා නොකරනු ඇත (සඳහා වටිනාකම නිශ්චිතව දක්වා නැත):

INSERT INTO table1
SELECT  col1
FROM    table2

මම MS SQL සේවාදායකය භාවිතා කරමි. වෙනත් RDMS ක්‍රියා කරන්නේ කෙසේදැයි මම නොදනිමි.


24

තෝරාගත් අගයන් භාවිතා කරන තවත් උදාහරණයක් මෙයයි:

INSERT INTO table1(desc, id, email) 
SELECT "Hello World", 3, email FROM table2 WHERE ...

පැරණි පිළිතුර සහ තවමත් ප්‍රයෝජනවත්. ඉතා සරල හා පැහැදිලි නමුත් මගේ අවශ්‍යතා හරියටම ආවරණය කරයි. ස්තූතියි!
සෙබස්තියන් කක්ස්මරෙක්

21

වගු තීරු අනුක්‍රමය දන්නා විට සරල ඇතුළත් කිරීම:

    Insert into Table1
    values(1,2,...)

සරල ඇතුළත් කිරීම් සඳහන් තීරුව:

    Insert into Table1(col2,col4)
    values(1,2)

වගුවක තෝරාගත් තීරු ගණන (# වගුව 2) ඇතුළත් කිරීමේ වගුවට සමාන වන විට තොග ඇතුළත් කිරීම (වගුව 1)

    Insert into Table1 {Column sequence}
    Select * -- column sequence should be same.
       from #table2

ඔබට වගුවක අපේක්ෂිත තීරුවට පමණක් ඇතුළු කිරීමට අවශ්‍ය විට තොග ඇතුළත් කිරීම (වගුව 1):

    Insert into Table1 (Column1,Column2 ....Desired Column from Table1)  
    Select Column1,Column2..desired column from #table2
       from #table2

18

INSERT වෙත SELECT වගන්තිය සඳහා වරහන් භාවිතා කරන්න . උදාහරණයක් ලෙස මේ වගේ:

INSERT INTO Table1 (col1, col2, your_desired_value_from_select_clause, col3)
VALUES (
   'col1_value', 
   'col2_value',
   (SELECT col_Table2 FROM Table2 WHERE IdTable2 = 'your_satisfied_value_for_col_Table2_selected'),
   'col3_value'
);

17

එක් වගුවකට වඩා භාවිතා කරමින් ප්‍රභවය ගන්නා තවත් උදාහරණයක් මෙන්න:

INSERT INTO cesc_pf_stmt_ext_wrk( 
  PF_EMP_CODE    ,
  PF_DEPT_CODE   ,
  PF_SEC_CODE    ,
  PF_PROL_NO     ,
  PF_FM_SEQ      ,
  PF_SEQ_NO      ,
  PF_SEP_TAG     ,
  PF_SOURCE) 
SELECT
  PFl_EMP_CODE    ,
  PFl_DEPT_CODE   ,
  PFl_SEC         ,
  PFl_PROL_NO     ,
  PF_FM_SEQ       ,
  PF_SEQ_NO       ,
  PFl_SEP_TAG     ,
  PF_SOURCE
 FROM cesc_pf_stmt_ext,
      cesc_pfl_emp_master
 WHERE pfl_sep_tag LIKE '0'
   AND pfl_emp_code=pf_emp_code(+);

COMMIT;

16

බහුවිධ වගු වලින් ඇතුළත් කරන්නේ කෙසේද යන්න මෙන්න. මෙම විශේෂිත උදාහරණය නම්, ඔබට බොහෝ අවස්ථා වලදී සිතියම් ගත කිරීමේ වගුවක් තිබේ:

insert into StudentCourseMap (StudentId, CourseId) 
SELECT  Student.Id, Course.Id FROM Student, Course 
WHERE Student.Name = 'Paddy Murphy' AND Course.Name = 'Basket weaving for beginners'

(ශිෂ්‍ය නාමයට ගැලපීම එකකට වඩා වැඩි වටිනාකමක් ලබා දෙන බව මට වැටහී ඇති නමුත් ඔබට අදහස ලැබෙනු ඇත. හැඳුනුම්පත අනන්‍යතා තීරුවක් වන අතර එය නොදන්නා විට හැඳුනුම්පතක් හැර වෙනත් දෙයක් සමඟ ගැලපීම අවශ්‍ය වේ.)


14
INSERT INTO yourtable
SELECT fielda, fieldb, fieldc
FROM donortable;

මෙය සියලුම DBMS මත ක්‍රියා කරයි


14

SELECT * INTOවගුව භාවිතා කර සියලු තීරු ඇතුළු කිරීමට ඔබට අවශ්‍ය නම් ඔබට මෙය උත්සාහ කළ හැකිය .

SELECT  *
INTO    Table2
FROM    Table1;

13

මම ඇත්ත වශයෙන්ම SQL සේවාදායක 2008 හි පහත සඳහන් දේට කැමැත්තෙමි:

SELECT Table1.Column1, Table1.Column2, Table2.Column1, Table2.Column2, 'Some String' AS SomeString, 8 AS SomeInt
INTO Table3
FROM Table1 INNER JOIN Table2 ON Table1.Column1 = Table2.Column3

එය ඇතුළු කිරීමේ () කට්ටලය එකතු කිරීමේ පියවර ඉවත් කරයි, ඔබ වගුවේ යන්නේ කුමන අගයන්ද යන්න තෝරා ගන්න.


13

මෙය මට ප්‍රයෝජනවත් විය:

insert into table1 select * from table2

වාක්‍යය ඔරකල්ගේ කතාවට වඩා ටිකක් වෙනස් ය.


12

මයික්‍රොසොෆ්ට් SQL සේවාදායකය සඳහා, MSDN හි සපයා ඇති SYNTAX අර්ථ නිරූපණය කිරීමට ඉගෙන ගැනීමට මම නිර්දේශ කරමි. ගූගල් සමඟ සින්ටැක්ස් සෙවීම වෙන කවරදාටත් වඩා පහසුය.

මෙම විශේෂිත අවස්ථාව සඳහා, උත්සාහ කරන්න

ගූගල්: ඇතුළු කිරීමේ අඩවිය: microsoft.com

පළමු ප්‍රති result ලය වනුයේ http://msdn.microsoft.com/en-us/library/ms174335.aspx

පිටුවේ ඉහළින් ඇති වාක්‍ය ඛණ්ඩය අර්ථ නිරූපණය කිරීම ඔබට අපහසු නම් උදාහරණයට පහළට අනුචලනය කරන්න ("වෙනත් වගු වලින් දත්ත ඇතුළු කිරීමට SELECT සහ EXECUTE විකල්ප භාවිතා කිරීම").

[ WITH <common_table_expression> [ ,...n ] ]
INSERT 
{
        [ TOP ( expression ) [ PERCENT ] ] 
        [ INTO ] 
        { <object> | rowset_function_limited 
          [ WITH ( <Table_Hint_Limited> [ ...n ] ) ]
        }
    {
        [ ( column_list ) ] 
        [ <OUTPUT Clause> ]
        { VALUES ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n     ] 
        | derived_table       <<<<------- Look here ------------------------
        | execute_statement   <<<<------- Look here ------------------------
        | <dml_table_source>  <<<<------- Look here ------------------------
        | DEFAULT VALUES 
        }
    }
}
[;]

එහි ඇති වෙනත් RDBMS සඳහා මෙය අදාළ විය යුතුය. සියලුම නිෂ්පාදන IMO සඳහා වන සියලුම වාක්‍ය ඛණ්ඩ මතක තබා ගැනීමේ තේරුමක් නැත.


මම සම්පුර්ණයෙන්ම එකඟ නොවෙමි, මම වසර ගණනාවක් තිස්සේ එම සින්ටැක්ස් ප්‍රකාශ දෙස බැලුවද තවමත් ඒවායේ හිස් හෝ වලිග සෑදිය නොහැක. උදාහරණ වඩාත් ප්‍රයෝජනවත් වේ
reggaeguitar

මෙය පිළිතුරක් නොවේ, එය "
ලියකියවිලි

12
INSERT INTO FIRST_TABLE_NAME (COLUMN_NAME)
SELECT  COLUMN_NAME
FROM    ANOTHER_TABLE_NAME 
WHERE CONDITION;

@ggorlen එය මට පෙනෙන ආකාරයට පෙනේ
reggaeguitar

සමාලෝචන පෝලිමේ එය කේත පමණක් පිළිතුරක් ලෙස සලකුණු කරන ලදි. ඔබේ අදහස මට මෙහි දැකිය හැකිය, නමුත් - මෙම පිටුවේ බොහෝ පිළිතුරු වල සන්දර්භය තුළ වැඩි යමක් පැවසිය නොහැක.
ggorlen

9
select *
into tmp
from orders

ලස්සනයි, නමුත් ක්‍රියාත්මක වන්නේ tmp නොපවතින විට පමණි (එය නිර්මාණය කර පුරවයි). (SQL sever)

පවතින tmp වගුවට ඇතුළත් කිරීමට:

set identity_insert tmp on

insert tmp 
([OrderID]
      ,[CustomerID]
      ,[EmployeeID]
      ,[OrderDate]
      ,[RequiredDate]
      ,[ShippedDate]
      ,[ShipVia]
      ,[Freight]
      ,[ShipName]
      ,[ShipAddress]
      ,[ShipCity]
      ,[ShipRegion]
      ,[ShipPostalCode]
      ,[ShipCountry] )
      select * from orders

set identity_insert tmp off

9

වෙනත් ඕනෑම වගුවකින් බහුවිධ වාර්තා ඇතුළත් කිරීමට හොඳම ක්‍රමය.

INSERT  INTO dbo.Users
            ( UserID ,
              Full_Name ,
              Login_Name ,
              Password
            )
            SELECT  UserID ,
                    Full_Name ,
                    Login_Name ,
                    Password
            FROM    Users_Table
            (INNER JOIN / LEFT JOIN ...)
            (WHERE CONDITION...)
            (OTHER CLAUSE)

3

තීරුවේ නම ලිවීමට අවශ්‍ය නොවී ඔබට යම් දත්ත වගුවකට ඇතුළු කිරීමට අවශ්‍ය නම්.

INSERT INTO CUSTOMER_INFO
   (SELECT CUSTOMER_NAME,
           MOBILE_NO,
           ADDRESS
      FROM OWNER_INFO cm)

වගු ඇති තැන:

            CUSTOMER_INFO               ||            OWNER_INFO
----------------------------------------||-------------------------------------
CUSTOMER_NAME | MOBILE_NO | ADDRESS     || CUSTOMER_NAME | MOBILE_NO | ADDRESS 
--------------|-----------|---------    || --------------|-----------|--------- 
      A       |     +1    |   DC        ||       B       |     +55   |   RR  

ප්‍රති ult ලය:

            CUSTOMER_INFO               ||            OWNER_INFO
----------------------------------------||-------------------------------------
CUSTOMER_NAME | MOBILE_NO | ADDRESS     || CUSTOMER_NAME | MOBILE_NO | ADDRESS 
--------------|-----------|---------    || --------------|-----------|--------- 
      A       |     +1    |   DC        ||       B       |     +55   |   RR
      B       |     +55   |   RR        ||

2

පේළි කිහිපයක් ඇතුල් කිරීම සඳහා ඔබ INSERT VALUES මාර්ගයට ගියහොත්, වරහන් වරහන් භාවිතයෙන් VALUES කට්ටලවලට වෙන් කිරීමට වග බලා ගන්න, එබැවින්:

INSERT INTO `receiving_table`
  (id,
  first_name,
  last_name)
VALUES 
  (1002,'Charles','Babbage'),
  (1003,'George', 'Boole'),
  (1001,'Donald','Chamberlin'),
  (1004,'Alan','Turing'),
  (1005,'My','Widenius');

එසේ නොමැතිනම් MySQL වස්තු "තීරු ගණන 1 වන පේළියේ අගය ගණනය කිරීම හා නොගැලපේ", ඔබ ඒ ගැන කුමක් කළ යුතු දැයි අවසාන වශයෙන් දැනගත් විට ඔබ සුළු ලිපියක් ලිවීම අවසන් කරයි.


6
ප්‍රශ්නය වන්නේ “ වෙනත් වගුවකින් ආදානය භාවිතා කර වගුවකට ඇතුළු කරන්න ” යන්නයි. ඔබේ පිළිතුර මෙම ප්‍රශ්නයට ආමන්ත්‍රණය කරන්නේ කෙසේද?
තත්ත්ව උත්ප්‍රේරක

3
ඔහුට එතරම් අමාරු වෙන්න එපා. මම වටේ යනකොට ඒක මගේ ප්‍රශ්නයට උත්තර දුන්නා. Ual ක්වාලි කැටලිස්ට්
කැමරන් බෙල්ට්


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.