gpt4 book ai didi

mysql - 使用 MYSQL 第 2 部分根据另一个表中的现有条目添加条目

转载 作者:行者123 更新时间:2023-11-29 03:22:38 25 4
gpt4 key购买 nike

我试图根据另一个表中的现有条目添加一个条目与 MySQL:但是“解决方案”(我之前问过的另一个问题)在我的数据上没有正常工作,我不知道为什么.. .

这是我从中得到解决方案的问题:

Add an entry depending on existing entry in another table with 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`);

这是我尝试过的 2 个查询(我在其中使用了解决方案):

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;

两者都在工作,但他们对每个条目都显示“否”(不正确的地方):错误/问题在哪里?

信息:表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 这样中间带有 - 的术语作为列名。列名和表名请尽量全部小写。并提供有意义的名称而不是 ABC

像订单号这样的数字列应该是数字(在本例中是 int)而不是 varchar。

最后但并非最不重要的是,像 Did the customer ordered already? 这样冗长的列别名很少使用。这是在显示时在应用层完成的事情。

关于mysql - 使用 MYSQL 第 2 部分根据另一个表中的现有条目添加条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41376808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com