반응형
SQL 쿼리에 대한 지원이 필요하고 오류 메시지가 표시됨 하위 쿼리가 하나 이상의 행을 반환함
테이블이 두 개 있는데, 일치하는 voteid를 기반으로 할당(예산)을 검색하여 지출 잔액을 업데이트하고 싶습니다.
나는 phpmyadmin mysql을 사용하고 있습니다.
- Apache/2.4.43(Win64) OpenSSL/1.1g PHP/7.4.6
- 데이터베이스 클라이언트 버전: libmysql - mysqlnd 7.4.6
- PHP 확장: mysqli Documentation curl Documentation mbstring Documentation
- PHP 버전: 7.4.6
- 서버 유형:마리아DB
지금까지 저의 SQL 문입니다.
SELECT allocation
FROM vote
INNER JOIN expenditure ON vote.voteid = expenditure.voteid
GROUP BY vote.voteid;
SET @csum = (SELECT allocation
FROM vote
INNER JOIN expenditure ON vote.voteid = expenditure.voteid
GROUP BY vote.voteid);
UPDATE expenditure
SET balance = (@csum = @csum - expenses) OVER (partition BY voteid ORDER BY expenditureid) AS balance;
오류 메시지:
하위 쿼리가 하나 이상의 행을 반환합니다.
표 1.
| voteid | allocation |
+--------+------------+
| 1 | 50000 |
| 2 | 10000 |
| 3 | 34000 |
| 4 | 70000 |
표 2
| expenditureid | voteid | expenses |
+---------------+--------+----------+
| 1 | 2 | 300 |
| 2 | 2 | 650 |
| 3 | 4 | 900 |
| 4 | 4 | 1200 |
| 5 | 3 | 34000 |
예상 결과
+---------------+--------+----------+------------------------------+-----------------------------------------------------+
| expenditureid | voteid | expenses | balance (running difference) | calculation (sample column should not be included) |
+---------------+--------+----------+------------------------------+-----------------------------------------------------+
| | | | | 10000 |
+---------------+--------+----------+------------------------------+-----------------------------------------------------+
| 1 | 2 | 300 | 9700 | (10000-300) |
+---------------+--------+----------+------------------------------+-----------------------------------------------------+
| 2 | 2 | 650 | 9050 | (9700-650) |
+---------------+--------+----------+------------------------------+-----------------------------------------------------+
| | | | | |
+---------------+--------+----------+------------------------------+-----------------------------------------------------+
| | | | | 70000 |
+---------------+--------+----------+------------------------------+-----------------------------------------------------+
| 3 | 4 | 900 | 69100 | (70000-900) |
+---------------+--------+----------+------------------------------+-----------------------------------------------------+
| 4 | 4 | 1200 | 67900 | (69100-1200) |
+---------------+--------+----------+------------------------------+-----------------------------------------------------+
| | | | | |
+---------------+--------+----------+------------------------------+-----------------------------------------------------+
| | | | | 34000 |
+---------------+--------+----------+------------------------------+-----------------------------------------------------+
| 5 | 3 | 4000 | 30000 | (34000-4000) |
+---------------+--------+----------+------------------------------+-----------------------------------------------------+
total_allocation은 표시된 내용에 따라 열이 아닙니다.
다음 작업을 수행해야 합니다.
SET @csum = (SELECT sum(vote.allocation) AS total_allocation
FROM vote
INNER JOIN expenditure ON vote.voteid = expenditure.voteid
GROUP BY vote.voteid);
언급URL : https://stackoverflow.com/questions/62464562/need-assistance-with-sql-query-with-error-message-subquery-returns-more-than-1-r
반응형
'source' 카테고리의 다른 글
에 삽입...모든 열에 대한 세부 정보를 표시하지 않고 선택 (0) | 2023.08.22 |
---|---|
두 앱을 MariaDB Multi Master 데이터베이스에 연결합니다. (0) | 2023.08.22 |
숫자만 포함할 문자열 제약 조건을 확인합니다. (Oracle SQL) (0) | 2023.08.17 |
jQuery를 사용하여 URL 변경 및 리디렉션 (0) | 2023.08.17 |
나는 파이썬으로 바이낸스 데이터를 스트리밍하고 있지만 내 mariadbdb에 삽입하면 가격이 반올림됩니다. (0) | 2023.08.17 |