0

我想从第一个表中获取记录并检查第二个表中是否存在记录:

tbl_user

userid      email
-------------------------
1       abc@gmail.com
2       abcd@gmail.com
3       abedd@yahoo.com
4       xyz@gmail.com
5       test@ymail.com

tbl_user_responce

id      responce_email
-------------------------
1       abc@gmail.com
2       abcd@gmail.com
3       abc@yahoo.com
4       xyz@gmail.com
5       abcd@ymail.com

更新

注意:在我的 secord 表中,电子邮件以 xml 格式存储,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<user>
<userinfo>
<email>stevemartin148@gmail.com</email>
<status>1</status>
<description>Success</description>
</userinfo>
</user>

我想从 tbl_user 获取 tbl_user_responce 中不存在的那些记录

所以从上面的记录中我想要结果

Email
-----
abedd@yahoo.com
test@ymail.com

有人知道如何管理吗?

提前致谢。

4

2 回答 2

1

像这样的东西怎么样

SELECT  *
FROM    tbl_user
WHERE   NOT EXISTS (
                        SELECT  1
                        FROM    tbl_user_responce
                        WHEREN  tbl_user.email = tbl_user_responce.responce_email
                    )

甚至像

SELECT  tbl_user.*
FROM    tbl_user LEFT JOIN
        tbl_user_responce ON    tbl_user.email = tbl_user_responce.responce_email
WHERE   tbl_user_responce.responce_email IS NULL
于 2013-08-15T12:33:12.190 回答
0

您要求的查询不会使用任何索引,但只要每个“回复”只有一封电子邮件,这似乎就可以完成工作;

SELECT email 
FROM tbl_user
WHERE email NOT IN (
  SELECT SUBSTRING_INDEX(
           SUBSTRING_INDEX(responce_email,'<email>', -1),
         '</email>',1) 
  FROM tbl_user_responce;    
)

从“如果它没有关闭,我会做一个 SQLfiddle”部门。

于 2013-08-15T12:33:12.370 回答