๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ชฉ๋ก์ด ์—†์Šต๋‹ˆ๋‹ค.

[MySQL] 1093 ์—๋Ÿฌ(Error) ์ฒ˜๋ฆฌ

๐Ÿ›ข DB/MySQL
    ๋ฐ˜์‘ํ˜•

    MySQLMySQL



    MySQL์˜ ์ฟผ๋ฆฌ๋ฌธ์„ ์‹คํ–‰ํ•˜๋˜ ์ค‘์— ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•œ ์ฟผ๋ฆฌ๋ฌธ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋“ฑ์žฅํ•œ ์—๋Ÿฌ..


    ์•ˆ๋˜๊ฒ ๋‹ค ์‹ถ์–ด์„œ ์—๋Ÿฌ๋ฅผ ๋ฐ”๋กœ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ด์š”~



    1. ์›์ธ


    MySQL์˜ 1093์—๋Ÿฌ์˜ ์›์ธ์€ ๊ฐ„๋‹จํ•ด์š” MySQL์€ Oracle๊ณผ ๋‹ฌ๋ฆฌ UPDATE๋‚˜ DELETE ์ฟผ๋ฆฌ๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ 


    ์ž๊ธฐ ์ž์‹ ์˜ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋˜์–ด ์žˆ์–ด์š” ๊ทธ๋ž˜์„œ 1093์—๋Ÿฌ๋ฅผ ์ถœ๋ ฅํ•ด์คŒ์œผ๋กœ์จ ๊ทธ๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋Š” ๊ฑฐ์—์š”


    DELETE
    FROM tb_user
    WHERE id IN
        (SELECT DISTINCT a.id ext_id
         FROM tb_user a
         JOIN tb_user b ON a.user_name = b.user_name
         JOIN tb_history d ON d.id = a.history_id
         WHERE a.history_id != b.history_id
           AND history_name = 'Hello');
    cs


    MySQL Error 1093 : You can't specify target table



    ํ•˜์ง€๋งŒ ์–ด์ฉ” ์ˆ˜ ์—†์ด ์ž๊ธฐ ์ž์‹ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋–„๋ฌธ์— ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ด๋†“์œผ๋ ค๊ณ  ํ•ด์š”


    ๋ฐ”๋กœ Sub Query๋ฅผ ํ•˜๋‚˜ ๋” ๋„ฃ์–ด์„œ ์ž„์‹œ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์—์š”




    2. ํ•ด๊ฒฐ


    DELETE
    FROM tb_user
    WHERE id IN
        (SELECT ext_id
         FROM 
            (SELECT DISTINCT a.id ext_id
             FROM tb_user a
             JOIN tb_user b ON a.user_name = b.user_name
             JOIN tb_history d ON d.id = a.history_id
             WHERE a.history_id != b.history_id
               AND history_name = 'Hello') tmp);
    cs





    MySQL Error 1093 ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค~

    ๋ฐ˜์‘ํ˜•