DB 존나 초짜다... 개인 공부하면서 프로젝트 만들어보고 있는데 DB 활용해보면 좋겠다 싶어 MySQL로 하면서 머리 싸매고 있네.
일단 테이블이 세개 있는데...
테이블 "A"
[테스트 1]
01
02
03
04
이런식으로 단일 열로 구성된 테이블이 하나 있고;
테이블 "B"
[테스트 a] [테스트 b] [테스트 c] ....
1-1 05:40:00 ...
1-2 05:41:00 ...
1-3 05:42:00
1-4 05:43:00
1-5 05:44:00
... ... ...
이런식으로 열 여러개로 구성된 테이블이 하나 또 있고,
테이블 "C"
[테스트 1] [테스트 y] [테스트 z] ....
1 null ...
2 null ...
3 null ...
4 null ...
이렇게 테스트 1이라는 열을 완전히 공유하는 테이블 하나가 또 있어.
내가 하고 싶은건;
1. C 테이블의 테스트 y열에다가,
2. B 테이블의 테스트 b열의 값 중 05:42:00보다 작은 값만 선택하여 위에서부터 넣는다.
를 하고 싶어. 밑에처럼
테이블 "C"
[테스트 1] [테스트 y] [테스트 z] ....
1 05:40:00 ...
2 05:41:00 ...
3 null ...
4 null ...
UPDATE table_C
SET 테스트_y = (
SELECT 테스트_b
WHERE 테스트_b <= '05:42:00'
);
라고 쿼리를 쓰면 서브쿼리가 1개 이상 결과값을 반환한다고 쿼리 자체가 실행이 안되고.. 여기서 막혀서 진전이 없네. 다른 방법이 없을까?
쿼리 잘못적었다. UPDATE table_C SET 테스트_y = ( SELECT 테스트_b FROM table_B WHERE 테스트_b <= '05:42:00' );
넣을거면 인서트를 하는게 맞지 않음?
INSERT를 하면 내가 원하는대로가 아니라 테스트 y열에 맨 밑에 들어가더라구. null null null null 05:40:00 05:41:00 이런식으로
그게 뭔 상관인데? 혹시 row의 순서를 지키고 싶은거임?
그렇지. 정확히는 "테스트 1"열의 "1"이란 값이 들어간 행에는 "05:40:00"이란 값이 들어갔으면 좋겠고 "2"란 값이 들어간 행에는 "05:41:00" 이런식으로 순서대로 값들이 들어갔으면 좋겠어. 기존의 Null값들을 대체하면서
rdbms는 그렇게 쓰라고 있는게 아니야 순서가 필요하면 컬럼을 추가하고 정렬해
아.. 그런거야? RDBMS는 네 말대로 그렇게는 못 쓰는거구나. 참 어렵네.. 엑셀만 써보다가 엑셀 쓰듯이 쓸려니까 이것저것 안되는게 많아서 까다롭다. 답변 고마워.
못쓰는 것까진 아니어도 설계 의도와 다른거지 ㅋㅋ
불가능함 내 추천은 join으로 최종적으로 넣고 싶은 데이터 select해 온 후, c테이블 truncate하고 다시 insert히른거
아예 한번에 C테이블을 다시 써야하는구나. 쿼리가 많이 길어지겠네..
그리고 모든걸 쿼리로 해결하기 어려우면 백엔드 코드로 for문을 돈다든지 하는것도 방법임
파이썬 쓰고 있는데 아예 반복을 돌리는게 속편할려나?? 네말대로 그게 해답일수도 있겠네
고맙다. 서브쿼리로 해서 반복문 돌리니까 원하는 대로 되네. 왜 그 생각을 못했을까.
gpt한테 본문그대로 물어보면 대답 잘해줌. 근데 위엣사람 말대로 그렇게 쓰라고 있는게 아님. 차라리 view를 만드는것도 괜찮을듯
gpt도 써봤는데 만족할만한 답은 못 내놓더라구. View도 공부해봐야것네. 고마워
특슬람새끼 뭐만하면 gpt한테 물어보라 그러네
처음 글 써보는데 다들 친절하네.. 고맙다 얘들아