【发布时间】:2018-01-07 15:13:33
【问题描述】:
我有一个查询,我需要通过 1) 通过 old_email 比较来获取一行,如果没有找到则 2) 通过比较电子邮件列。 我需要确保第一次检查总是通过旧电子邮件,第二次检查是通过新 strong> 如果没有找到旧的,请发送电子邮件。
我知道我不能使用 set,因为无法保证比较顺序,例如
SELECT * FROM champions WHERE (email IN ('old@example.com', 'new@example.com'))
以下代码能否满足我的需求:
SELECT * FROM champions WHERE (email = 'old@example.com' OR email = 'new@example.com')
【问题讨论】:
-
如果您想要电子邮件是旧电子邮件或新电子邮件的行,为什么比较顺序很重要?两个查询都应该可以正常工作。
-
如果eMail ID都在同一列下,你将如何区分它们是旧的还是新的(更新的)?
-
@slaasko OP 所指的顺序是行顺序(不是谓词部分的评估顺序)。因为如果没有找到第一个电子邮件地址的记录,OP 只想搜索第二个电子邮件地址。 (换句话说,OP 目前不确定如何在 SQL 中表达这样的要求。)
-
@slaakso:同一个用户注册了两次,第一次是在 user+test@example.com,第二次是在 user@example.com。对于我的具体情况,我想确保始终满足初始情况。
标签: mysql sql select comparison