使用别名时拉多列

时间:2015-01-13 02:49:46

标签: mysql sql mysqli

所以我需要从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)导致此操作不起作用?我只是想获取作为邮件收件人的用户的电子邮件地址。第一个查询完美地获取邮件收件人,我相信这是获取电子邮件地址的正确格式。

查询不返回任何结果,但不返回错误。

1 个答案:

答案 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 = ?