如何查找mysql表中的表是否存在记录

时间:2013-08-15 12:30:36

标签: mysql

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

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

有人知道如何管理吗?

提前致谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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”部门。