MySQL을 사용하는 다른 테이블의 기존 항목에 따라 항목을 추가하려고 시도했지만 "솔루션"(이전에 질문 한 다른 질문에 있음)이 내 데이터에서 올바르게 작동하지 않고 이유를 모르겠습니다.
해결책이있는 질문은 다음과 같습니다.
MYSQL을 사용하여 다른 테이블의 기존 항목에 따라 항목 추가
다음은 필요한 테이블을 만들고 데이터를 가져 오는 쿼리입니다.
CREATE TABLE `EMailImport` (user_id VARCHAR(20), `E-Mail` VARCHAR(150));
LOAD DATA LOCAL INFILE 'C:/Users/xyz/Desktop/X/export.csv'
INTO TABLE `EMailImport`
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n';
DELETE FROM `EMailImport` LIMIT 1;
CREATE INDEX X ON `EMailImport` (`E-Mail`);
CREATE TABLE ABC AS SELECT customerID, ordernumber, `customersEmail`
FROM orders GROUP BY `customersEmail`;
CREATE INDEX Y ON ABC (`customersEmail`);
다음은 내가 시도한 두 가지 쿼리입니다 (솔루션을 사용한 곳).
SELECT ABC.*, CASE WHEN `customersEmail` IN (SELECT `E-Mail` FROM EMailImport) THEN 'Yes' ELSE 'No' end AS `Did the customer ordered already?` FROM ABC;
SELECT ABC.*,CASE WHEN EXISTS (SELECT * FROM EMailImport WHERE EMailImport.`E-Mail` = ABC.`customersEmail`) then 'yes' else 'no' end as `Did the customer ordered already?` from ABC;
둘 다 작동하지만 모든 항목에 대해 "아니오"를 표시합니다 (정확하지 않은 항목). 실수 / 문제는 어디에 있습니까?
Info
: 테이블 ABC의 열 유형이 지정된 데이터는 다음과 같습니다. customerID = int (10); ordernumber = varchar (50), customersEmail = varchar (255);
LEFT JOIN 및 COALESCE로 훨씬 간단하지 않습니까?
SELECT ABC.*,
CASE WHEN EMailImport.`E-Mail` IS NULL THEN 'No' ELSE 'Yes' END
AS `Did the customer ordered already?`
FROM ABC LEFT JOIN EMailImport on EMailImport.`E-Mail` = ABC.customersEmail
그리고 중간에있는 E-Mail
a 와 같은 용어 -
를 열 이름으로 사용하지 마십시오 . 열 및 테이블 이름에 모두 소문자를 사용하십시오. 대신 의미있는 이름을 지정하십시오.ABC
주문 번호와 같은 숫자 열은 varchar가 아니라 숫자 (이 경우 int) 여야합니다.
마지막으로 긴 열 별칭 Did the customer ordered already?
은 거의 사용되지 않습니다. 이것은 디스플레이 타임에 응용 프로그램 계층에서 수행되는 작업입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다