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


[MySQL]UNION°ú UNION ALL ÀÇ Â÷ÀÌ ¹× ÁÖÀÇ »çÇ×
12³â Àü
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
ÃßõÃßõ : 648 Ãßõ ¸ñ·Ï
¹øÈ£ Á¦¸ñ
2,885
input ÀÔ·Â ÇÊµå ¾ÕµÚ °ø¹é ½Ç½Ã°£ Á¦°Å
2,884
Placeholder Æ÷Ä¿½º½Ã °¨Ãß±â
2,883
MySQL Áߺ¹µÈ µ¥ÀÌÅ͸¦ »èÁ¦
2,882
MySQL Áߺ¹ µ¥ÀÌÅÍ È®ÀÎ
2,881
sessionStorage.getItem ¿Í sessionStorage.setItem
2,880
Á¦ÀÌÄõ¸® ·£´ýÀ¸·Î ¹è°æ»ö º¯°æ
2,879
preg match¿¡ °üÇÑ Á¤±Ô½Ä
2,878
Stream an audio file with MediaPlayer ¿Àµð¿À ÆÄÀÏ ½ºÆ®¸®¹Ö Çϱâ
2,877
Audio Streaming PHP Code
2,876
PHP $ SERVER ȯ°æ º¯¼ö Á¤¸®
2,875
Vimeo (ºñ¸Þ¿À) API ¸¦ »ç¿ëÇÏ¿© Ç÷¹À̾î ÄÁÆ®·ÑÇϱâ
2,874
iframe »ç¿ë½Ã ÇÏ´Ü¿¡ ¹ß»ýÇÏ´Â °ø¹é Á¦°Å¹æ¹ý
2,873
¾ÆÀÌÇÁ·¹ÀÓ(iframe) Àüüȭ¸é °¡´ÉÇÏ°Ô Çϱâ
2,872
ºÎÆ®½ºÆ®·¦(bootstrapk)¿¡¼­ »ç¿ëÇÏ´Â class¸í Á¤¸®
2,871
ºÎÆ®½ºÆ®·¦ CSS
2,870
Å©·Ò¿¡¼­ ¸¶Áø Á¶Àý
2,869
PHP ÇöÀç ÆäÀÌÁöÀÇ µµ¸ÞÀθíÀ̳ª urlµîÀÇ Á¤º¸ ¾Ë¾Æ¿À±â
2,868
PHP preg match all()
2,867
PHP ·Î À¥ÆäÀÌÁö ±Ü¾î¿À±â ¸ðµç ¹æ¹ý ÃÑÁ¤¸®!
2,866
[PHP] ¿ø°ÝÁö ÆÄÀÏ ÁÖ¼Ò ³ëÃâ ¾ÈÇÏ°í curl·Î ´Ù¿î·Îµå ¹Þ±â
2,865
PHP ÇÔ¼ö Á¤¸®
2,864
¾ÆÀÌÇÁ·¹ÀÓ(iframe) ºñÀ² À¯ÁöÇϸ鼭 Å©±â Á¶ÀýÇÏ´Â ¹æ¹ý
2,863
PHP ¹è¿­¿¡¼­ ¹«ÀÛÀ§·Î Çϳª »Ì¾ÆÁÖ´Â array rand() ÇÔ¼ö
2,862
PHP Á¤±Ô½Ä Á¤¸®
2,861
PHP Á¤±Ô½ÄÀ» È°¿ëÇÑ ÅÂ±× ¹× ƯÁ¤ ¹®ÀÚ¿­ Á¦°Å ¹× ÃßÃâ ¹æ¹ý
2,860
php Å©·Ñ¸µ ¶Ç´Â ÆÄ½Ì ÇÔ¼ö, Á¤±Ô½Ä ¸ðÀ½
2,859
Á¦ÀÌÄõ¸® ±âº» ¸í·É¾î
2,858
À¥ÆäÀÌÁö °¡·Î ¸ðµå¼¼·Î ¸ðµå ÀνÄÇϱâ
2,857
¸ð¹ÙÀÏ À¥ È­¸é °­Á¦ ȸÀü(°¡·Î¸ðµå °íÁ¤)
2,856
[HTML5]¿¡¼­ frameset ´ëü ¹æ¹ý°ú iframe ¼Ó¼º
¸ñ·Ï
¹ÂÁ÷Æ®·ÎÆ® ºÎ»ê±¤¿ª½Ã ºÎ»êÁø±¸ °¡¾ßµ¿ ¤Ó °³ÀÎÁ¤º¸Ãë±Þ¹æħ
Copyright ¨Ï musictrot All rights reserved.