我想从第一张表中获取记录&检查第二个表中是否存在记录:
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
有人知道如何管理吗?
提前致谢。
答案 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”部门。