我使用PostgreSQL 9.1并希望选择表中的单个记录。详情如下:
表名:MUSER
目前在表中的字段:用户ID,用户名,名字,姓氏,电话号码和电子邮件ID
要选择字段:用户ID,电子邮件ID,电话号码
请求参数:电子邮件ID和电话号码
条件应满足:
预期输出:
单个记录(用户ID是唯一的)使用用户ID,电话号码和电子邮件ID
两者或任一个(如果存在)。
我曾试图查询为:
SELECT userid, mailid, phonenumber
FROM muser
WHERE phonenumber = ? OR mailid = ?
它的工作罚款前两个条件,但去年condition..When不工作我火了最后一个条件查询它给目前在query.Why因此所有记录?是他们在查询什么变化?或其他任何
假设当你的意思是“不存在”,mailid或PHONENUMBER将在数据库NULL
,
SELECT userid, mailid, phonenumber
FROM muser
WHERE (phonenumber = ? AND (mailid IS NULL OR mailid = ''))
OR ((phonenumber IS NULL OR phonenumber = '') AND mailid = ?)
OR (phonenumber = ? AND mailid = ?)
当我处理过滤器,其中的值可以是任何包括null
我会尝试添加coalesce()
SELECT userid, mailid, phonenumber
FROM muser
WHERE coalesce(phonenumber,'no data') = coalesce(?,'no data')
OR coalesce(mailid,'no data') = coalesce(?, 'no data');