2012-02-15 23 views
1
一个列表加入它

我希望做一些事情,如:如何从一个表,右选择与MySQL的

SELECT client.id FROM client RIGHT JOIN ('[email protected]', '[email protected]', ...); 

我有以下的“客户”表:

id email 
1 [email protected] 
2 [email protected] 

的用户输入他想邀请的电子邮件地址列表,并且我需要得到以下结果:

email_to_invite client.id 
[email protected]  NULL 
[email protected]   1 

这样我就知道谁已经在t他DB(并获得与内部的消息系统的消息),和谁,我需要通过电子邮件邀请(client.id IS NULL)

SOLUTION:(感谢乔·斯特凡内利)

首先我有向我的用户授予CREATE TEMPORARY TABLES权限

CREATE TEMPORARY TABLE email (email VARCHAR(255)); 
INSERT INTO email VALUES ('[email protected]'), ('[email protected]'); 
SELECT e.email, c.id FROM email e LEFT JOIN client c ON e.email=c.email; 

回答

2

将用户列表放入临时表中并加入到该表中。

0

为了FO发现不属于电子邮件名单上的客户端,你可以做到以下几点:

SELECT client.id FROM client WHERE email NOT IN ('[email protected]', '[email protected]') 
+0

-1这会给我所有我没有邀请的客户 – Gavriel 2012-02-15 17:48:29

0

你可以认为这些人可能会加入,所以为他们创造客户记录,如果他们不这样做存在。

假设你有一个布尔字段,上面写着一个客户端是一个成员,你对电子邮件地址列的唯一关键,你可以插入这样的:

INSERT IGNORE INTO client (email, is_member) VALUES ('[email protected]', false); 
INSERT IGNORE INTO client (email, is_member) VALUES ('[email protected]', false); 

然后,让你的邀请,它只是:

SELECT * 
FROM client 
WHERE is_member = false 
    AND email IN ('[email protected]', '[email protected]') 

您可以扩展此以避免发送多个邀请或限制邀请的数量。如果它是一个社交网站,您还可以在客户和非会员之间建立关系,因此一旦有人注册,您就可以推荐连接。我的观点是,为这些类型的任务存储非成员的电子邮件地址是有好处的。