让我们说我对用户运行sql查询以返回联系人类型。 用户A返回三行:
555-1234
555-4321
userA@email.com
现在,我想查找没有电话号码但可能有电子邮件地址的用户。谁能给我关于我将如何开始的建议?如果需要更多信息,请询问。
编辑:很抱歉,当前正在移动。稍后将发布有用的数据。现在,我可以说没有严格的专栏。例如,电话1,电话2,电子邮件。
它更开放,因为该列中当前包含一个字符串,因此可以包含电话号码或电子邮件。因此,某些用户在表中有几个条目,而有些用户可能只有一个。
我正在尝试找出如何查找没有电话号码条目的用户。希望这现在更有意义。
答案 0 :(得分:1)
假设您只是说“没有电话”,因为没有这样的比较运算符“可能有”
单个表:
SELECT * FROM Usertable WHERE Phone1 IS NULL AND Phone2 IS NULL
用户+联系表:
SELECT *
FROM Users U
WHERE NOT EXISTS (
SELECT *
FROM Contacts C
WHERE U.UserID = C.UserID AND ContactType = 'Phone'
)
答案 1 :(得分:1)
比方说,您有名为 User 和 Contact 的表,对于一个用户,联系人表中有多个联系人。
使用以下查询查找没有电话号码但可能具有电子邮件地址的用户。
SELECT *
FROM User u
JOIN Contact c ON u.userId = c.userId and c.contactType='Email'
WHERE NOT EXISTS (SELECT 1 FROM Contact c1 WHERE u.userId = c1.userID and c.contactType='Phone')
答案 2 :(得分:0)
使用空值检查和电子邮件列length
进行检查,就像您所说的那样,这就是为什么我用空值或某些值进行检查的原因
select * from users where phone_number is null and (email is null or LEN(trim(email))>0)
答案 3 :(得分:0)
如果您只希望没有电话号码的用户:
select u.*
from users u
where not exists (select 1
from contact c
where u.userId = c.userId and
c.contactType = 'Phone'
);
您没有指定您实际上想要的电子邮件地址(如果有),因此这应该是吸引用户的最有效方法。