2017-03-09 1 views
0

내가있는 경우 : 특정 WHERE 절에서 열의 모든 값을 최대 값으로 설정하는 방법은 무엇입니까?

2 baskets of oranges with 7 and 10 each 

3 baskets of peaches with 12 and 15 each 

다음 내가 설정하려면 :

for every orange basket value of maxfruit to 10 and 

for every peach basket value of maxfruit to 15 

내가

update baskets set maxfruit = (select max(fruitCount) from baskets b where b.fruit = fruit) 

을 시도했지만 그냥 15에 이르기까지 모든 설정 ...

+0

이 작동하면 시도하십시오 : maxfruit = maxfruit = (바구니 b에서 b.fruit = 과일을 선택하십시오. 여기서 b.fruit = fruit를 선택하십시오.) basket.fruit = 'fruit' – SGventra

+0

전체 점이 특정 이름을 사용하지 않는 경우 :( – Zeks

+0

then 데이터 삽입시 maxfruit 값을 최대 값으로 설정해야합니다. – SGventra

답변

-1

당신의 업데이트는 전체 테이블에서 최대 값을 가져 오는 것입니다. 하위 쿼리를 사용하여 max fo 당신이 테이블 접두어를 사용하지 않는 R 각 과일 SQL에서

UPDATE b 
SET b.maxfruit = b2.fruitCount 
FROM baskets b 
INNER JOIN (SELECT fruit, MAX(fruitCount) AS fruitCount 
      FROM baskets 
      GROUP BY fruit) b2 ON b.fruit = b2.fruit 
+0

잘 모르겠습니다. 그의 작품은 SQLite. 그것은 단지 나에게 오류를 돌려 준다 '. – Zeks

+0

T-SQL 당신은 SQLlite에서 비슷한 일을 할 수 있어야합니다. – Moffatt

1

, 당신은 그것의 이름으로 열을 참조하고, 당신이 결국 테이블 인스턴스는, 가장 안쪽의 하나입니다.

따라서 fruit은 가장 안쪽 인 인스턴스 인 b을 나타냅니다. 즉, b.fruitfruit은 항상 동일한 값입니다.

은 외부 테이블의 인스턴스를 참조하려면

, 당신은 외부 테이블의 이름을 사용해야합니다

update baskets 
set maxfruit = (select max(fruitCount) 
       from baskets b 
       where b.fruit = baskets.fruit); 
           ^^^^^^^^ 

(대신 b.fruit, 당신은 단지 fruit을 쓸 수 있습니다,하지만 그것은 분명이 될 수 있습니다.)

관련 문제