"user"테이블에 정수 필드 2 개가 있습니다 : leg_count 및 leg_length. 첫 번째는 사용자의 다리 양과 두 번째 다리의 총 길이를 저장합니다.하위 쿼리에서 동일한 테이블을 사용하여 하위 쿼리를 업데이트하십시오.
사용자에 속하는 각 다리까지 전형적인 인터넷 사용자가 무한대 다리에 제로를 가질 수 있습니다, 별도의 테이블에 저장됩니다: 나는 한 쿼리에서 모든 사용자에 대한 통계를 다시 계산하려면
CREATE TABLE legs (
user_id int not null,
length int not null
);
, 그래서
UPDATE users SET
leg_count = subquery.count, leg_length = subquery.length
FROM (
SELECT COUNT(*) as count, SUM(length) as length FROM legs WHERE legs.user_id = users.id
) AS subquery;
및 오류 "동일한 쿼리 수준의 다른 관계를 참조 할 수 없습니다에서 하위 쿼리를"얻을 : 나는보십시오.
SELECT COUNT(*), SUM(length) FROM legs;
이 가능 최적화하는 것입니다, 필요한 데이터가 하나의 SELECT에서 계산 될 수 있지만
그래서 나는,이 SELECT의 각 행에 대해 수행 할 데이터베이스를 만드는 것
UPDATE users SET
leg_count = (SELECT COUNT(*) FROM legs WHERE legs.user_id = users.id),
leg_length = (SELECT SUM(length) FROM legs WHERE legs.user_id = users.id)
을 할 필요가 하나의 SELECT 하위 쿼리 만 사용하는 내 UPDATE 쿼리?
저는 PostgreSQL을 사용합니다. 그러나 저는 그 해결책이 모든 SQL 언어에 존재한다고 생각합니다.
TIA.
'users.id'를, 모두를. – Tobu
PostgreSQL 9.1이 필요하다고 언급 했어야합니다. –