[SQL] 어떻게 Access에서 하위 쿼리와 업데이트 쿼리를 수행합니까?
SQL어떻게 Access에서 하위 쿼리와 업데이트 쿼리를 수행합니까?
나는 포트에 액세스 데이터베이스, SQL 서버, MySQL은, 오라클에서 잘 작동이 SQL 쿼리를합니다. 어떻게 그렇게 할 수 있습니까? 지금은 어떤 이유로 COMPANY_ID 저를 묻는 메시지를 표시합니다.
편집 : 내가 처음 VendorRegKeys에서 COMPANY_ID 열을 생성하는 것을 잊었다 때문에 프롬프트를 얻고 있었다. 지금은 오류가 "작업이 업데이트 가능한 쿼리를 사용해야합니다"얻고있다.
UPDATE VendorRegKeys
SET Company_ID = (SELECT Users.Company_ID
FROM Users
WHERE Users.User_ID = VendorRegKeys.CreatedBy_ID)
업데이트 : 나는 JuniorFlip의 답변에 따라 작업이 발견 :
UPDATE VendorRegKeys, Users
SET VendorRegKeys.Company_ID = Users.Company_ID
WHERE VendorRegKeys.CreatedBy_ID = Users.User_ID
해결법
-
==============================
1.COMPANY_ID이 VendorRegKeys 또는 사용자의 기존 필드가 아니기 때문에 그 수 있습니다.
COMPANY_ID이 VendorRegKeys 또는 사용자의 기존 필드가 아니기 때문에 그 수 있습니다.
편집하다:
UPDATE VendorRegKeys INNER JOIN Users ON Users.User_ID = VendorRegKeys.CreatedBy_ID SET VendorRegKeys.Company_ID = Users.Company_ID
-
==============================
2.똑바로 대답 : 당신은 할 수 없습니다. Access 데이터베이스 엔진 단순 바닐라 SQL-92를 지원하지 않는 스칼라 하위 쿼리 구문 경우에도 자신의 소위 ANSI-92 쿼리 모드이다.
똑바로 대답 : 당신은 할 수 없습니다. Access 데이터베이스 엔진 단순 바닐라 SQL-92를 지원하지 않는 스칼라 하위 쿼리 구문 경우에도 자신의 소위 ANSI-92 쿼리 모드이다.
당신은 즉 안전하지 않은 스칼라 요구 사항을 적용하지 않고 ** 임의 조용히 값을 선택할 것 독자적인 구문을 사용하도록 강요하고 있습니다. (당신이 처음에 하나를 사용하도록 허용 된 경우) 또한,하지가 전혀 작동하지 않습니다 간단한 구조를 넘어, 특히 하위 조회가 설정 기능 (MAX, SUM 등)를 사용하는 경우 - 정말 불만족에 대한이 문서를 참조하십시오 해결 방법을 설명합니다.
죄송합니다 부정적 그러나 이것은 정말 기본 구문 및 액세스 팀은 아직 고정 주위를 확보하지 않은 이유를 이해할 수 없습니다. 내가 심각하게 더 이상 액세스 데이터베이스 엔진을 할 수없는 이유 패배를 모르는 번호 하나의 이유이다.
액세스 독점 UPDATE..JOIN..Set 구문의 안전하지 않은 동작을 보여주기 위해
CREATE TABLE Users ( User_ID CHAR( 3 ) NOT NULL, Company_ID CHAR( 4 ) NOT NULL, UNIQUE ( Company_ID, User_ID ) ); CREATE TABLE VendorRegKeys CreatedBy_ID CHAR( 3 ) NOT NULL UNIQUE, Company_ID CHAR( 4 ) ); INSERT INTO Users VALUES ( 'Kip', 'MSFT' ); INSERT INTO Users VALUES ( 'Kip', 'AAPL' ); INSERT INTO VendorRegKeys VALUES ( 'Kip', NULL ); UPDATE VendorRegKeys INNER JOIN Users ON Users.User_ID = VendorRegKeys.CreatedBy_ID SET VendorRegKeys.Company_ID = Users.Company_ID;
액세스 내에서 업데이트 문을 실행하면, UI는 우리에게 경고
사실에도 불구하고 VendorRegKeys 테이블에 한 행이 있습니다!
무엇 실제로 일어나는 것은있을 것입니다 예측하는 신뢰할 수있는 방법없이, 우리가 단일 행의 열을 업데이트하는 데 사용됩니다 값 중 하나입니다.
표준 SQL의 스칼라 하위 쿼리 구문을 사용하면 오류가 발생하는 것입니다 명령문이 틀림없이 원하는 기능이다, 실행 실패 (표준 SQL의 MERGE 구문도이 방식으로 동작합니다).
-
==============================
3.당신이 하나를 시도 할 수
당신이 하나를 시도 할 수
update a set a.company_id = b.company_id from vendorRegkeys a, users b where a.createdby_id = b.user_id
from https://stackoverflow.com/questions/1375207/how-do-i-perform-update-query-with-subquery-in-access by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 왜 SQL NULL에서 NULL과 일치하지 않을 수 있습니까? (0) | 2020.06.10 |
---|---|
[SQL] 선택 문 내에서 NULL과 빈 문자열을 교체 (0) | 2020.06.10 |
[SQL] SQLite는 쿼리, 'LIKE' (0) | 2020.06.10 |
[SQL] MSSQL 정규 표현식 (0) | 2020.06.10 |
[SQL] 왜 PL SQL 익명 블록이 완료 출력 없음? [복제] (0) | 2020.06.10 |