ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • mysql 두 개의 테이블 데이터 사용하기 예시들
    프로그래밍/DB 2017. 9. 30. 18:22
    728x90
    반응형





    두 개의 테이블에서 칼럼들 읽어오기 (inner join) 




    SELECT t1.*, t2.*

    FROM table1 t1, table2 t2

    WHERE t1.id = t2.t1_id




    다른 테이블 정보로 칼럼 데이터 업데이트 하기 





    UPDATE table1 t1, table2 t2

    SET t1.field_to_change = t2.field_with_data

    WHERE t1.field1 = t2.field2;







    다른 테이블 필드 값을 추가하기 






    INSERT INTO tbl_temp2 (fld_id)

      SELECT tbl_temp1.fld_order_id

      FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;






    특정 문자열을 select 문과 같이 사용할 경우에는 select 문의 필드명에서 그냥 특정 문자열을 입력하면 된다. 





    INSERT INTO db2.b (x,y,z) SELECT x,y,4 FROM db1.a



    테이블 2에 있는 데이터가 테이블 1에 없을 경우에만 (NOT EXISTS) 테이블 2 정보를 테이블 1로 입력하기.



    insert into t1 ( `c1`, `c2`, `c3`, `c4`, `c5`) SELECT `c1`, `c2`, `c3`, `c4`, `c5` FROM t2   WHERE NOT EXISTS (SELECT * FROM t2                     WHERE t1.c1 =t2.`c2`);



    테이블 2에 없는 데이트들만 테이블 1에서 선택하기. 


    SELECT a.* FROM #test1 a WHERE NOT EXISTS (SELECT * FROM #test2 b WHERE a.type = b.type); 




    처음에 위 mysql문에서 아래와 같이 사용하였더니 

    SELECT * FROM #test1 a WHERE NOT EXISTS (SELECT * FROM #test2 b WHERE a.type = b.type); 

    Unknown column in order clause 에러가 나왔다. 

    order 문도 없는데 에러가 나와서 당황했는데 역시 스택오버플로에서 답을 찾았다 ㅠㅠ
    결론만 적으면 phpmyadmin에서 첫번째 칼럼에 자동적으로 order by를 지정한다고 한다. 


    The reason is that phpMyAdmin is adding an ORDER BY to your query for the first column in the results grid. Because of the alias, the code that does this fails.

    This issue reproduces on phpMyAdmin 4.0.6. I don't know the status on the latest 4.2.5


    참고: https://stackoverflow.com/questions/17312297/unknown-column-in-order-clause/24534013#24534013?newreg=74111d804c0445868c139e34ecdf4fa7




    테이블 2에도 있는 데이터에만 정보를 테이블 1에 업데이트 하기. 



    update table2 set `holiday`=1 where exists 

    (select * from table1 where table1.date = table2.date)




    728x90
    반응형
Designed by Tistory.