ȸ¿ø°¡ÀԡžÆÀ̵ð/ºñ¹øã±â
ȨÀ¸·Î


[MySQL]UNION°ú UNION ALL ÀÇ Â÷ÀÌ ¹× ÁÖÀÇ »çÇ×
13³â Àü
ANSI SQL¿¡¼­ Á¦¾ÈÇÏ´Â ÁýÇÕ ¿¬»ê "UNION", "INTERSECT", "MINUS" Áß¿¡¼­
MySQL¿¡¼­´Â UNION ÁýÇÕ ¿¬»ê¸¸ Á¦°øÇÏ°í ÀÖ´Ù.
(ÇÏÁö¸¸ MySQL¿¡¼­ INTERSECT³ª MINUS¸¦ ´Ù¸¥ ÇüÅÂÀÇ Äõ¸®·Î Ç®¾î¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù.)

ÀÌ ±Û¿¡¼­´Â UNION ¿¡ ´ëÇؼ­ Á» ´õ ÀÚ¼¼È÷ ¾Ë¾Æ º¸°íÀÚ ÇÑ´Ù.
UNION ÁýÇÕ ¿¬»êÀº ´Ù½Ã ¾Æ·¡¿Í °°ÀÌ µÎ°¡Áö Á¾·ù·Î ³ª´©¾îÁø´Ù.
  - UNION ALL
  - UNION DISTINCT

¿ì¸®°¡ ÀϹÝÀûÀ¸·Î »ç¿ëÇÏ´Â ¹æ½ÄÀÎ ¾Æ¹«·± Ãß°¡ Å°¿öµå ¾øÀÌ UNION ¸¸ »ç¿ëÇÏ´Â °ÍÀº
UNION DISTINCT ¸¦ ÁÙ¿©¼­ »ç¿ëÇÏ°í ÀÖ´Â °ÍÀÌ´Ù.
UNION ALL°ú UNION DISTINCT¸¦ ·¹Äڵ尡 ¸¹Àº °á°ú¿¡ ´ëÇؼ­ Àû¿ëÇغ» »ç¶÷Àº
¾Æ¸¶µµ µÑÀÇ Ã³¸® ¹æ½Ä¿¡ ´ëÇؼ­ ÀDZ¸½ÉÀ» °¡Á®º» ÀûÀÌ ÀÖÀ» °ÍÀÌ´Ù.
·¹ÄÚµå °Ç¼ö°¡ ¸¹¾ÆÁö¸é ¸¹¾ÆÁú¼ö·Ï ±× ¼º´É Â÷ÀÌ´Â ¾öû³­ Â÷À̸¦ º¸¿©ÁÙ °ÍÀÌ´Ù.
¿ì¼±, ¾Æ·¡¿Í °°ÀÌ 2°³¾¿ µ¿ÀÏÇÑ ·¹ÄÚµå µ¥ÀÌÅ͸¦ °¡Áö°í ÀÖ´Â tab1°ú tab2¶ó´Â Å×À̺íÀÌ ÀÖ´Ù.

mysql>SELECT fdpk, fddata FROM tab1;
+------+--------+
| fdpk | fddata |
+------+--------+
|    1 | data1  |
|    2 | data2  |
+------+--------+
2 rows in set (0.00 sec)

mysql>SELECT fdpk, fddata FROM tab2;
+------+--------+
| fdpk | fddata |
+------+--------+
|    1 | data1  |
|    2 | data2  |
+------+--------+
2 rows in set (0.01 sec)

±×·¯¸é, ÀÌ µÎ°³ Å×ÀÌºí¿¡ ´ëÇؼ­ °¢°¢ UNION°ú UNION ALLÀ» »ç¿ëÇÏ´Â Äõ¸®¸¦ ½ÇÇàÇغ¸ÀÚ.

mysql>SELECT fdpk, fddata
    -> FROM (
    ->   SELECT fdpk, fddata FROM tab1
    ->   UNION ALL
    ->   SELECT fdpk, fddata FROM tab2
    -> ) x;
+------+--------+
| fdpk | fddata |
+------+--------+
|    1 | data1  |
|    2 | data2  |
|    1 | data1  |
|    2 | data2  |
+------+--------+
4 rows in set (0.00 sec)

mysql>SELECT fdpk, fddata
    -> FROM (
    ->   SELECT fdpk, fddata FROM tab1
    ->   UNION
    ->   SELECT fdpk, fddata FROM tab2
    -> ) x;
+------+--------+
| fdpk | fddata |
+------+--------+
|    1 | data1  |
|    2 | data2  |
+------+--------+
2 rows in set (0.00 sec)

µÎ°³ÀÇ Äû¸® ½ÇÇà °á°ú UNIONÀº ·¹Äڵ尡 ¹ÝÀ¸·Î ÁÙ¾ú´Ù.
ÀÌ¹Ì ´Ùµé ¾Ë°í ÀÖ´Ù½ÃÇÇ UNIONÀº UNION DISTINCT¿Í µ¿ÀÏÇÑ ÀÛ¾÷À» Çϱ⠶§¹®¿¡ Áߺ¹µÇ´Â ·¹Äڵ带 Á¦°ÅÇßÀ½À» ¾Ë ¼ö ÀÖ´Ù.
ÇÏÁö¸¸, UNION ALLÀÇ °æ¿ì¿¡´Â º°µµÀÇ Áߺ¹ Á¦°Å °úÁ¤À» °ÅÄ¡Áö ¾Ê°í ±×³É °á°ú¸¦ ³»·ÁÁØ´Ù.
¾ÆÁÖ Áß¿äÇÑ ³»¿ëÀÌÁö¸¸, »ç½Ç ÀÌ ³»¿ëÀ» ´Ùµé º°·Î ½Å°æ¾²Áö ¾Ê°í ¸ðµÎµé UNIONÀ» Áñ°Ü »ç¿ëÇÑ´Ù.

¾ÈŸ±õ°Ôµµ, MySQLÀÇ ½ÇÇà°èȹ¿¡¼­´Â µÑÀÇ Â÷À̸¦ ÀüÇô ´À³¥ ¼ö ¾ø´Ù.
+----+--------------+------------+------+..+------+..+------+------+-------+
| id | select_type  | table      | type |..| key  |..| ref  | rows | Extra |
+----+--------------+------------+------+..+------+..+------+------+-------+
|  1 | PRIMARY      | <derived2> | ALL  |..| NULL |..| NULL |    4 |       |
|  2 | DERIVED      | tab1       | ALL  |..| NULL |..| NULL |    2 |       |
|  3 | UNION        | tab2       | ALL  |..| NULL |..| NULL |    2 |       |
|NULL| UNION RESULT | <union2,3> | ALL  |..| NULL |..| NULL | NULL |       |
+----+--------------+------------+------+..+------+..+------+------+-------+

ÇÏÁö¸¸ Áߺ¹ Á¦°Å´Â ±×³É ¾òÀ» ¼ö ÀÖ´Â °á°ú°¡ ¾Æ´Ï´Ù.±×·¯¸é, MySQLÀÌ ³»ºÎÀûÀ¸·Î ¾î¶»°Ô Áߺ¹À» Á¦°ÅÇÏ´Â °ÍÀϱî ?

³»ºÎÀûÀΠ󸮸¦ ¾Ë¾Æº¸±â Àü¿¡, ·¹ÄÚµåÀÇ Áߺ¹À̶ó´Â Ç¥ÇöÀ» Çߴµ¥ ÀÌ Áߺ¹ÀÇ ±âÁØÀÌ ¹«¾úÀϱî ?
    1. °¢ Å×À̺íÀÇ Primary key ?
    2. Àüü Å×À̺íÀÇ ¸ðµç Çʵå ?
    3. °¢ ¼­ºê Äõ¸®¿¡¼­ SELECTµÈ Æ©ÇÃ(·¹ÄÚµå)ÀÇ ¸ðµç Çʵå ?

±×·¸´Ù. ÀÌ¹Ì SELECTµÈ °á°ú¸¦ °¡Áö°í UNIONÇϱ⠶§¹®¿¡ SELECTµÇ±â ÀüÀÇ Å×À̺íÀ̳ª ·¹Äڵ忡 ´ëÇÑ Á¤º¸´Â ¾Ë ¼ö ¾ø´Ù.
±×·¡¼­, Áߺ¹ ¿©ºÎÀÇ ÆÇ´ÜÀº SELECTµÈ Æ©Çõ鿡 ¼ÓÇØÀÖ´Â ¸ðµç Ä÷³ÀÇ °ªµé ÀÚü°¡ Áߺ¹ üũÀÇ ±âÁØÀÌ µÇ´Â °ÍÀÌ´Ù.

ÀÚ~, ±×·¯¸é ÀÌÁ¦ MySQLÀÌ ³»ºÎÀûÀ¸·Î UNION ALL°ú UNIONÀ» ó¸®ÇÏ´Â °úÁ¤À» ¾Ë¾Æº¸ÀÚ.
1. ÃÖÁ¾ UNION [ALL | DISTINCT] °á°ú¿¡ ÀûÇÕÇÑ Àӽà Å×À̺í(Temporary table)À» ¸Þ¸ð¸® Å×À̺í·Î »ý¼º
2. UNION ¶Ç´Â UNION DISTINCT ÀÇ °æ¿ì, Temporary Å×À̺íÀÇ ¸ðµç Ä÷³À¸·Î Unique Hash À妽º »ý¼º3. ¼­ºêÄõ¸®1 ½ÇÇà ÈÄ °á°ú¸¦ Temporary Å×ÀÌºí¿¡ º¹»ç
4. ¼­ºêÄõ¸®2 ½ÇÇà ÈÄ °á°ú¸¦ Temporary Å×ÀÌºí¿¡ º¹»ç
5. ¸¸¾à 3,4¹ø °úÁ¤¿¡¼­ Temporary Å×À̺íÀÌ Æ¯Á¤ »çÀÌÁî ÀÌ»óÀ¸·Î Ä¿Áö¸é
    Temporary Å×À̺íÀ» Disk Temporary Å×À̺í·Î º¯°æ
    (À̶§ Unique Hash À妽º´Â Unique B-Tree À妽º·Î º¯°æµÊ)
6. Temporary Å×À̺íÀ» Àо Client¿¡ °á°ú Àü¼Û
7. Temporary Å×ÀÌºí »èÁ¦

UNION µÎ °¡ÁöÀÇ Â÷ÀÌ´Â 2¹ø °úÁ¤ µü ÇϳªÀÌ´Ù. Áߺ¹ Á¦°Å¸¦ À§Çؼ­ Temporary Å×ÀÌºí¿¡ À妽º¸¦ »ý¼ºÇÏ´À³Ä ?. ±×·¸Áö ¾Ê´À³Ä ?.º°·Î Áß¿äÇÏÁö ¾ÊÀº °Í °°Áö¸¸, ÀÌ À妽º·Î ÀÎÇؼ­ 3,4¹ø °úÁ¤ÀÇ ÀÛ¾÷ÀÌ ÀÛÁö ¾ÊÀº ¼º´É Â÷ÀÌ°¡ ¸¸µé¾î ³»°Ô µÈ´Ù.
½ÇÁ¦ UNIONÀ» ½ÇÇàÇÏ´Â µ¥ÀÌÅÍÀÇ °Ç¼ö¿¡ µû¶ó¼­ ´Ù¸£°ÚÁö¸¸, 1.5 ~ 4¹è °¡·®ÀÇ ¼º´É Â÷ÀÌ·Î UNION ALLÀÌ ºü¸£°Ô 󸮵ȴÙ.
¸¸¾à ó¸®Áß µ¥ÀÌÅÍÀÇ ·®ÀÌ À۾Ƽ­ 5¹ø °úÁ¤À» °ÅÄ¡Áö ¾Ê´Â´Ù¸é ¸Þ¸ð¸® Temporary Å×ÀÌºí¿¡ Hash À妽º¸¦ »ç¿ëÇϱ⠶§¹®¿¡
¼Óµµ Â÷ÀÌ°¡ ¾ÆÁÖ ¹Ì¼¼ÇÒ °ÍÀÌ´Ù.
ÇÏÁö¸¸ µ¥ÀÌÅÍ·®ÀÌ Ä¿Á®¼­ 5¹ø °úÁ¤À» °ÅÄ¡°Ô µÇ¸é Disk Temporary Å×ÀÌºí¿¡ B-Tree À妽º¸¦ »ç¿ëÇϱ⠶§¹®¿¡ Å« ¼º´É Â÷À̸¦ º¸ÀÌ°Ô µÉ °ÍÀÌ´Ù.
ÀÌ ¼º´É Â÷ÀÌ´Â UNION ÇÏ´Â µÎ ÁýÇÕ¿¡ Áߺ¹µÇ´Â ·¹Äڵ尡 ÀÖµç ¾øµç °ü°è ¾øÀÌ ¹ß»ýÇÒ °ÍÀÌ´Ù.

À§¿¡¼­ Àá±ñ ¾Ë¾Æº¸¾Ò´ø, "Áߺ¹ÀÇ ±âÁØ"À» »ý°¢Çϸé, UNION ÇÏ´Â Ä÷³µéÀÇ ¼ö°¡ ¸¹¾ÆÁö°í ·¹ÄÚµåÀÇ »çÀÌÁî°¡ Ä¿Áú¼ö·Ï µÎ ÀÛ¾÷ ¸ðµÎ¿¡°Ô ºÒ¸®ÇÏ°ÚÁö¸¸, UNION ALLº¸´Ù´Â UNION¿¡ ´õ ¾Ç¿µÇâÀÌ Å¬ °ÍÀÌ´Ù.

°á·ÐÀº,
0. UNION À̵çÁö UNION ALLÀ̵çÁö »ç½Ç ±×¸® ÁÁÀº SQL ÀÛ¼ºÀº ¾Æ´Ï´Ù.
    UNIONÀÌ ÇÊ¿äÇÏ´Ù´Â °ÍÀº »ç½Ç µÎ ¿£ÅÍƼ(Å×À̺í)°¡ ÇϳªÀÇ ¿£ÅÍƼ(Å×À̺í)·Î ÅëÇÕÀÌ µÇ¾ú¾î¾ß
    ÇÒ ¿£ÅÍƼµéÀ̾ú´Âµ¥, ¾Ë ¼ö ¾ø´Â ÀÌÀ¯·Î ºÐ¸® ¿î¿µµÇ´Â °æ¿ì°¡ »ó´çÈ÷ ¸¹´Ù.
    Áï ¸ðµ¨¸µ Â÷¿ø¿¡¼­ ¿£ÅÍƼ¸¦ ÀûÀýÈ÷ ÅëÇÕÇÏ¿© UNIONÀÇ ¿ä°ÇÀ» ¸ðµÎ Á¦°ÅÇÏÀÚ.
1. µÎ ÁýÇÕ¿¡ Àý´ë Áߺ¹µÈ Æ©ÇÃ(·¹ÄÚµå)°¡ ¹ß»ýÇÒ ¼ö ¾ø´Ù´Â º¸ÀåÀÌ ÀÖ´Ù¸é UNION ALLÀ» ²À »ç¿ëÇÏÀÚ.
    µÎ ÁýÇÕ¿¡¼­ ¸ðµÎ °¢°¢ÀÇ PK¸¦ Á¶È¸Çϴµ¥, ±× µÎ ÁýÇÕÀÇ PK°¡ Àý´ë Áߺ¹µÇÁö ¾Ê´Â ÇüÅÂ
2. Áߺ¹ÀÌ ÀÖ´Ù ÇÏ´õ¶óµµ ±×¸® ¹®Á¦µÇÁö ¾Ê´Â´Ù¸é UNION º¸´Ù´Â UNION ALLÀ» »ç¿ëÇÏÀÚ.
3. ¸¸¾à UNIONÀ̳ª UNION ALLÀ» »ç¿ëÇØ¾ß ÇÑ´Ù¸é, ÃÖ¼Ò ÇÊ¿ä Ä÷³¸¸ SELECT ÇÏÀÚ.




http://dev.mysql.com/doc/refman/5.0/en/union.html
ÃßõÃßõ : 732 Ãßõ ¸ñ·Ï
¹øÈ£ Á¦¸ñ
2,891
ÀÔ·Â Çʵ忡¼­ ƯÁ¤´Ü¾î(¿¹:#err)°¡ Æ÷ÇԵǾúÀ» ¶§ ½Ç½Ã°£ °¨Áö ¹× °æ°íâ ¶ç¿ì±â
2,890
µ¥ÀÌÅͺ£À̽º ÃÖÀûÈ­¿Í Äõ¸® È¿À²¼ºÀ» ³ôÀÌ °Ë»ö ¼º´ÉÀ» °³¼±ÇÏ´Â ¹æ¹ý
2,889
°£´ÜÇÑ °Ô½ÃÆÇ ¸¸µé±â
2,888
PHPÀÇ php.ini ÆÄÀÏ¿¡¼­ ¼³Á¤ÇÒ ¼ö ÀÖ´Â ÁÖ¿ä Ç׸ñµéÀ» Ä«Å×°í¸®º°·Î Á¤¸®
2,887
À¯Æ©ºê µ¿¿µ»óÀÇ ½æ³×ÀÏ À̹ÌÁö¸¦ üũÇÏ¿© À¯È¿ÇÑ ¿µ»óÀ̾ƴҶ§ ¿¬°áµÈ üũ¹Ú½º¸¦ ÀÚµ¿À¸·Î üũ
2,886
À̹ÌÁö URLÀÌ À¯È¿ÇÏÁö ¾ÊÀ» ¶§, ÇØ´ç À̹ÌÁö¿Í ¿¬°áµÈ üũ¹Ú½º¸¦ ÀÚµ¿À¸·Î üũ
2,885
HTTPS·Î Á¢¼ÓÇÑ »ç¿ëÀÚ¸¦ °­Á¦·Î HTTP·Î ¸®µð·º¼Ç ÇÏ·Á¸é
2,884
PHP¿¡¼­ MP3 ÆÄÀÏÀ» Á÷Á¢ ÀÐ°í ½ºÆ®¸®¹Ö Çϱâ
2,883
ÇöÀç ÆäÀÌÁö°¡ location.reload()¿¡ ÀÇÇØ »õ·Î°íħµÇ¾ú´ÂÁö
2,882
ÅؽºÆ® ÆÄÀÏÀ» Àаí, °¢ ÁÙÀÇ ³¡¿¡¼­ 6±ÛÀÚ¸¦ »èÁ¦ÇÑ ÈÄ, °á°ú¸¦ »õ·Î¿î ÆÄÀÏ¿¡ ÀúÀåÇÕ´Ï´Ù.
2,881
cURLÀ» »ç¿ëÇÏ¿© ¸®´ÙÀÌ·ºÆ®¸¦ µû¶ó°¡ ÃÖÁ¾ URL °¡Á®¿À±â
2,880
[PHP] $_SERVER ȯ°æº¯¼ö
2,879
10Áø¼ö <-> 16Áø¼ö º¯È¯±â PHP¼Ò½º
2,878
ÅؽºÆ®¿¡ Á÷Á¢ ±×¶óµ¥ÀÌ¼Ç »ö»óÀ» Àû¿ëÇÏ·Á¸é?
2,877
CSS¸¦ »ç¿ëÇÏ¿© ¿ä¼ÒÀÇ ³»¿ë¹°¿¡ µû¶ó width¸¦ Á¶Á¤ÇÏ´Â ¹æ¹ý
2,876
À¥¼­¹ö ip È®ÀÎ
2,875
À¥È£½ºÆÃÀÇ Àý´ë°æ·Î¸¦ È®ÀÎ
2,874
input ÀÔ·Â ÇÊµå ¾ÕµÚ °ø¹é ½Ç½Ã°£ Á¦°Å
2,873
Placeholder Æ÷Ä¿½º½Ã °¨Ãß±â
2,872
MySQL Áߺ¹µÈ µ¥ÀÌÅ͸¦ »èÁ¦
2,871
MySQL Áߺ¹ µ¥ÀÌÅÍ È®ÀÎ
2,870
sessionStorage.getItem ¿Í sessionStorage.setItem
2,869
Á¦ÀÌÄõ¸® ·£´ýÀ¸·Î ¹è°æ»ö º¯°æ
2,868
preg match¿¡ °üÇÑ Á¤±Ô½Ä
2,867
Stream an audio file with MediaPlayer ¿Àµð¿À ÆÄÀÏ ½ºÆ®¸®¹Ö Çϱâ
2,866
Audio Streaming PHP Code
2,865
PHP $ SERVER ȯ°æ º¯¼ö Á¤¸®
2,864
Vimeo (ºñ¸Þ¿À) API ¸¦ »ç¿ëÇÏ¿© Ç÷¹À̾î ÄÁÆ®·ÑÇϱâ
2,863
iframe »ç¿ë½Ã ÇÏ´Ü¿¡ ¹ß»ýÇÏ´Â °ø¹é Á¦°Å¹æ¹ý
2,862
¾ÆÀÌÇÁ·¹ÀÓ(iframe) Àüüȭ¸é °¡´ÉÇÏ°Ô Çϱâ
¸ñ·Ï
¹ÂÁ÷Æ®·ÎÆ® ºÎ»ê±¤¿ª½Ã ºÎ»êÁø±¸ °¡¾ßµ¿ ¤Ó °³ÀÎÁ¤º¸Ãë±Þ¹æħ
Copyright ¨Ï musictrot All rights reserved.