首先,我很抱歉我的英语。
我想比较生成md5的两条记录:
我在table2中输入信息,我从table1
中输入INSERT INTO table2 (id_table_2, hash_string)
SELECT t.id, MD5 (CONCAT (t.firstname, t.lastname)) AS hash_string
FROM table1 t WHERE t.id = $some_value
之后我想知道table1中哪些记录在table2中没有,但我无法获得我想要的结果。我这样做:
SELECT t.id, MD5(CONCAT(t.firstname, t.lastname)) , ti.hash_string
FROM table1 t
LEFT JOIN table2 ti ON (t.id = ti.id_table_2
AND MD5(CONCAT(t.firstname, t.lastname)) != ti.hash_string)
WHERE t.state = 2
但它不起作用。
我想要的是表1中不在table2中的记录,但是从那里,如果md5 hash不同也会显示它。但我没能得到它。我感谢你能给我的所有帮助。谢谢。
答案 0 :(得分:1)
也许你想要这个,看到最后添加的行,我也将!=
更改为=
:
SELECT t.id, MD5(CONCAT(t.firstname, t.lastname)) , ti.hash_string
FROM table1 t
LEFT JOIN table2 ti ON (t.id = ti.id_table_2
AND MD5(CONCAT(t.firstname, t.lastname)) = ti.hash_string)
WHERE t.state = 2
AND ti.id_table_2 IS NULL
这招的基本形式:
SELECT *
FROM a
LEFT JOIN b ON a.id = b.id
WHERE b.id IS NULL
答案 1 :(得分:0)
我相信这应该会帮助你(将hash_string移出join并将其追加为where子句):
SELECT t.id, MD5(CONCAT(t.firstname, t.lastname)) , ti.hash_string
FROM table1 t
LEFT JOIN table2 ti ON (t.id = ti.id_table_2)
WHERE t.state = 2
AND MD5(CONCAT(t.firstname, t.lastname)) != ti.hash_string
AND ti.id_table_2 is NULL;