2011-02-11 134 views
1

今天早上我不知所措。也許我的咖啡被麻醉了?簡單的問題 - 將現有的ID導入此臨時表中進行導出。不更改行由此mySQL更新查詢生成。爲什麼?

表所示:

表人

+--------+-----------------------+ 
| id  | email     | 
+--------+-----------------------+ 
| 142755 | [email protected] | 
+--------+-----------------------+ 

表no_dma

+--------+------------------------+ 
| person | email     | 
+--------+------------------------+ 
|  0 | [email protected] | 
+--------+------------------------+ 

查詢:

UPDATE 
person, no_dma 
SET no_dma.person = person.id 
WHERE person.email = no_dma.email; 

我已經驗證了至少一些匹配鄂麥的存在l地址在兩個表中,但更新產生

Query OK, 0 rows affected (9.31 sec) 
Rows matched: 0 Changed: 0 Warnings: 0 

很明顯,我今天有點d bra。

請幫我嗎?我做錯了什麼?

//編輯

每評論下面我做這些查詢:

mysql> select person, email from no_dma limit 0,1; 
+--------+------------------------+ 
| person | email     | 
+--------+------------------------+ 
|  0 | [email protected] 
+--------+------------------------+ 
1 row in set (0.00 sec) 

mysql> select email from no_dma where email = '[email protected]'; 
Empty set (0.00 sec) 

mysql> select email from no_dma where TRIM(email) = '[email protected]'; 
Empty set (0.46 sec) 

兩個表具有電子郵件字段存儲與整理設置爲latin1_swedish_ci VARCHAR。

而這個查詢,WTH?

mysql> SELECT CONCAT('"',email,'"') from no_dma limit 0,3; 
+-----------------------+ 
| CONCAT('"',email,'"') | 
+-----------------------+ 
" |[email protected] 
" |[email protected] 
" |[email protected] 
+-----------------------+ 


mysql> SELECT email from no_dma limit 0,3; 
+--------------------+ 
| email    | 
+--------------------+ 
|[email protected] 
    |[email protected] 
|[email protected] 
+--------------------+ 

這是怎麼回事?看起來像換行符,但我認爲TRIM()處理這些?

mysql> SELECT TRIM(email) from no_dma limit 0,3; 
+--------------------+ 
| TRIM(email)  | 
+--------------------+ 
|[email protected] 
    |[email protected] 
|[email protected] 
+--------------------+ 
3 rows in set (0.00 sec) 

UPDATE:FOUND ISSUE 進口被在Windows完成生成的CSV的mysqlimport但給予精氨酸

--lines封端逐= '\ n'

重新導入數據工作正常。 對不起,浪費了時間。

+0

您是如何驗證的?當你運行`SELECT person.id FROM person,no_dma WHERE person.email = no_dma.email`時,你會得到行嗎? – 2011-02-11 15:55:42

+1

我想我在你的例子中看到了一個額外的空間,在no_dma.email結尾處,嘗試從no_dma`選擇CONCAT('「',email,''')來查看是否是這種情況。 – jswolf19 2011-02-11 15:56:15

回答

3

表no_dma有尾隨空格。數據不一樣。

編輯:

  • SET ANSI_PADDING?
  • 它真的是一個空格: 是ASCII 160
  • 每個值的散列或校驗和顯示什麼?
  • 字符串長度是多少?
1

我認爲這句話很好。 B/C我測試了它,它工作。