Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 为什么选择。。。在声明中不起作用?_Mysql - Fatal编程技术网

Mysql 为什么选择。。。在声明中不起作用?

Mysql 为什么选择。。。在声明中不起作用?,mysql,Mysql,我的数据库中有两个MySQL表,具有相同的结构,源和目标 我用来连接两者的外键是“email”列 基本上,目标只包含一个经过验证的电子邮件列表,它是源中电子邮件的子集,还包含从电子邮件中键入的其他地址数据。我需要从有有效电子邮件的来源中提取所有记录。简单,嗯?似乎无法让MySQL执行此操作 我的问题是: SELECT email, firstname, lastname, address, city, state, zip, phone FROM Source

我的数据库中有两个MySQL表,具有相同的结构,源和目标

我用来连接两者的外键是“email”列

基本上,目标只包含一个经过验证的电子邮件列表,它是源中电子邮件的子集,还包含从电子邮件中键入的其他地址数据。我需要从有有效电子邮件的来源中提取所有记录。简单,嗯?似乎无法让MySQL执行此操作

我的问题是:

SELECT
  email,
  firstname,
  lastname,
  address,
  city,
  state,
  zip,
  phone
FROM Source 
WHERE email IN
  (SELECT email FROM Target);
当我这样做的时候,我得到的记录是零;但我知道,
selectemailfromtarget
是有效的,而且我知道源代码包含电子邮件


我试图在MySQL Workbench 5.2.34中实现这一点,在这里,查询运行时没有错误……但不会产生任何输出。(我知道服务器正在运行,等等)

您的代码工作正常。如果看不到任何数据,就不可能说出问题的原因,但可能还有其他问题,您没有向我们展示

工作小提琴:

模式:

Create table Source(
  email varchar(30),
  firstname varchar(30),
  lastname varchar(30),
  address varchar(30)
);

Create table Target(
  email varchar(30)
);


Insert into Source (email, firstname, lastname, address) VALUES('jack@gmail.com', 'jack', 'smith', '123 pine lane');
Insert into Source (email, firstname, lastname, address) VALUES('fake@gmail.com', 'fake', 'name', '456 pine street');

Insert into Target (email) VALUES('jack@gmail.com');
查询:

SELECT
  email,
  firstname,
  lastname,
  address
FROM Source 
WHERE email IN
  (SELECT email FROM Target);
结果是:

jack@gmail.com  jack    smith   123 pine lane

事实上,我已经解决了这个问题……很抱歉,这篇文章让人费解:问题在于用于创建目标表的导入文件中有额外的换行符(\n)。MySQL中的TRIM函数并没有为此做任何事情,但这就是连接无法工作的原因。一旦我删除了导入文件中的额外换行符,并重新导入了表,瞧!代码起作用了…

在类似OP post的中使用有什么区别?@IswantoSan老实说,从这个意义上说,我认为使用联接更像是一种“最佳实践”/个人偏好。最好在表中添加列前缀以防止歧义。我尝试了内部联接方法,使用别名表前缀…仍然没有乐趣。我认为MySQL对电子邮件的等效性感到困惑…将尝试在其周围放置TRIM…感谢您的建议。嗯…这仍然不起作用:TRIM上的内部连接目标(Source.email)=TRIM(Target.email)…这里没有想法了!您可以发布目标和源表中的示例电子邮件数据吗?