如果两个案例匹配,我正试图取回结果:
但是,即使table_users.Email='user@email.com'存在,我也会得到空的结果!!!
SELECT table_users.Email, table_users.DeleteFlag, table_devices.DeviceUuid
FROM table_users, table_devices
WHERE table_users.Email='user@email.com'
OR table_devices.DeviceUuid='51ec969c-8546-41f4-a748-ec2458c81d17';
我错过了什么......?出于性能原因,我宁愿不将其分为两个查询。
谢谢!
答案 0 :(得分:0)
您的PHP代码是否假设只返回一条记录,而实际上可能会返回多条记录?
如果两个表格没有任何关联,您应该使用两个查询来获取所需的信息。如果没有连接条件,您的查询将比使用两个单独的查询效率低得多,因为您将获得与查询不匹配的每一行的一条记录。
如果您坚持只使用一个查询,请尝试以下方法:
SELECT Email, DeleteFlag, NULL AS DeviceUuid
FROM users
WHERE Email='user@email.com'
UNION
SELECT NULL AS Email, NULL AS DeleteFlag, DeviceUuid
FROM devices
WHERE DeviceUuid = '51ec969c-8546-41f4-a748-ec2458c81d17';
如果您将OR更改为AND,并且如果在表中找到给定的Device Uuid,则原始查询也应该有效。
答案 1 :(得分:0)
事实证明,这样做的唯一方法肯定是在两个单独的查询中,因为我正在检查两个单独的表中是否存在两个并且无法加入它们,因为其中一个可能不存在。
对于我需要的逻辑,两个单独的SELECT查询显然是唯一的解决方案。
感谢你们的帮助!