2013-04-04 156 views
0

这是一个简单的事情,但我不;吨得到它我只能从MySQL查询获得的最后一个记录

我有一个DB 日期两个表和日期newsmail 我有一些列的ID,姓名,地址,电子邮件等 在newsmail我有2场ID,邮件

我需要提取日期,所有记录,包含从newsmail

电子邮件地址我已经试过:

SELECT * FROM date WHERE date.email IN (SELECT mail FROM newsmail); 

我收到一个记录起始日期从newsmail 也

SELECT * FROM date d JOIN newsmail n ON d.email LIKE n.mail 

相同的结果,最后一行如上... 电子邮件和邮件字段VARCHAR(50)

http://sqlfiddle.com/#!2/fad06/1/0 在这里它的工作,但不在我的真实数据库

问题是从txt文件插入数据到newsmail

INITIAL:

$tmpfisier = $_FILES["upfile"]["tmp_name"]; 
$file_handle = fopen($tmpfisier, "r"); 
    while(!feof($file_handle)){ 
     $email_line = fgets($file_handle); 
     $values = mysql_query("INSERT INTO newsmail (`ID` ,`mail`) VALUES (NULL , '$email_line')"); 
    } 
    fclose($file_handle); 

编辑:

$tmpfisier = $_FILES["upfile"]["tmp_name"]; 
$file_handle = fopen($tmpfisier, "r"); 
    while(!feof($file_handle)){ 
     $raw_email_line = fgets($file_handle); 
     $email_line = preg_replace('/\s\v/u', '', $raw_email_line); 
     $values = mysql_query("INSERT INTO newsmail (`ID` ,`mail`) VALUES (NULL , '$email_line')"); 
    } 
    fclose($file_handle); 

所以这个问题是从空格TXT/CSV文件

谢谢大家!

+0

尝试是这样的: “SELECT * FROM日期WHERE date.email IN(SELECT MAIL FROM newsmail)” – puelo 2013-04-04 12:20:27

回答

0
SELECT a.* 
FROM Date a 
     INNER JOIN NewsMail b 
      ON a.email LIKE CONCAT('%', b.mail, '%') 
+0

不应该'_'和''%被在'b.mail'逃脱? – 2013-04-04 12:22:04

+0

@MarcelKorpel是的,但我不知道如何值的样子。 – 2013-04-04 12:22:52

+0

试过,我只得到最后一行... – 2013-04-04 12:28:33

0

使用此:

SELECT d.* 
FROM date d 
INNER JOIN newsmail n 
    ON n.mail = d.email; 
+0

结果:第一列(n.mail)与newsmail电子邮件,用NULL列的其余部分,并在中间的某个地方,我有一排从newsmail – 2013-04-04 12:25:08

+0

与上次记录coresponding你能提供sqlfiddle样本的字段。 COM? @GabrielPetrut – hjpotter92 2013-04-04 12:26:55

+0

这很奇怪。 http://sqlfiddle.com/#!2/fad06/1/0在sqlfiddle它的工作 – 2013-04-04 12:53:08

0

可能需要的TRIM功能,除去开头和结尾的空格。

SELECT * FROM date d LEFT JOIN newsmail n ON TRIM(d.email) = TRIM(n.mail) 

对于SQLSERVER,您可能需要使用LTRIM和RTRIM合力得到相同的结果。

SELECT * FROM date d LEFT JOIN newsmail n ON RTRIM(LTRIM(d.email)) = RTRIM(LTRIM(n.mail)) 
相关问题