여기 약간 혼란 스럽습니다.삽입 및 한도와 함께 사용할 경우 MySql group_concat 동작
나는 table_a와 table_b를 가지고 있으며 아래의 SQL을 실행합니다.
table_a
"id" "addedUser" "addedName"
"1" "1" "james"
"2" "1" "kirk"
"3" "1" "lars"
"4" "2" "michael"
table_b
"id" "userName" "userDisplay" "userFreinds"
"1" "norman" "james" "james,kirk,lars"
insert into table_b (
userName,
userDisplay,
userFreinds
) select 'norman', addedName, group_concat(addedName) from table_a where addedUser = 1 limit 1;
내 생각은, 특정 사용자에 대한 table_a
의 모든 addedName
값의 쉼표로 구분 된 값의 목록과 함께, table_b
에 table_a
에서 addedName
에서 최상위 기록을 얻을 수 있습니다.
문에서 한도를 사용하지만 mysql은 내가 지정한 사용자의 userFriends
에 대한 모든 addedName
값의 문자열을 제공하는 것처럼 보입니다.
하지만이 방법이 올바른/최적의 방법입니까? MySql은 userDisplay
에 대한 단일 값을 어떻게 반환합니까? 그러나 모든 값은 userFriends
입니까? group_concat
거기에서 별도의 선택을 실행하고 있습니까? 이런 식으로 유지하면 성능 문제가 발생합니까?
이상하게도 결과는 LIMIT가 없어도 동일합니다. 나는 거기에 한계를 지켜야 하는가?
더 좋은 방법이 있나요? 결과는 내가 필요한 것입니다. 나는 여기서 옳고 그름을 어떻게하고 있나?
선택 사항에 대해 EXPLAIN을 실행하여 현재 진행중인 작업을 확인해야합니다. 이 쿼리를 실행하십시오 : explainUnumer = 1 limit 1 –