所以我需要从sql表中提取两列,但是由于DISTINCT(),我需要使用一列作为别名。对于这种情况,我在文档中找不到多少,所以我转过来了。
这有效(没有第二列):
SELECT distinct(message_recips.userid) as userid
FROM message_recips WHERE messageid = ?
然而,这并不是:
SELECT distinct(message_recips.userid) as userid, users.email
FROM message_recips
INNER JOIN users ON users.email = message_recips.userid
WHERE messageid = ?
为什么添加第二列(users.email)导致此操作不起作用?我只是想获取作为邮件收件人的用户的电子邮件地址。第一个查询完美地获取邮件收件人,我相信这是获取电子邮件地址的正确格式。
查询不返回任何结果,但不返回错误。
答案 0 :(得分:1)
第二个查询是要求所有可能的行中的用户ID和电子邮件,这些行可以来自每个表中的一行,其中也包含users.email = message_recips.userid。
由于您没有获得任何行,因此您没有等同于message_recips用户ID的用户电子邮件。
(不奇怪。)
你可能想要:
SELECT distinct(message_recips.userid) as userid, users.email
FROM message_recips
INNER JOIN users ON users.userid = message_recips.userid
WHERE messageid = ?