2012-05-01 17 views
0

我有这样的命令:在这种情况下,如何使用嵌套的INSERT/SELECT命令?

INSERT INTO table2 (username,profile) SELECT DISTINCT username,profile 
FROM table1 WHERE profile='$profile' and username <> '$sender' 

我的问题是我想这样的:INSERT INTO table2 (username,profile,type)其中类型会是相同的字符串,说“串”

重要:我只想username是DISTINCT。 profiletype可以是相同的。 另外,profile将始终是相同的值。

我该如何做到这一点?

非常感谢,认为

+0

嗨,实际上配置文件总是一样的。让我编辑 – alexx0186

回答

3
INSERT INTO table2 (username, profile, type) 
SELECT username, profile, "string" 
FROM table1 
WHERE profile='$profile' AND username <> '$sender' 
GROUP BY username 

请请请绝对肯定$profile$sender已清洗的可能的SQL注入攻击(如果那意味着什么给你,去了解Bobby Tables)。你会更好地使用准备好的语句,将你的变量作为参数传递给SQL,而这些参数不会被SQL评估。

+0

后,嗨,谢谢你的提示。我使用了mysql_real_escape_string()。看起来这是很好的保护,不是吗?谢谢 – alexx0186

+0

这很好,但它过去有可利用的错误;谁知道,也许会找到更多?参数化报表的安全程度更高。 – eggyal

+0

感谢您的回复。我正在寻找manuel for'group by',它看起来并不像我想要的那样有'DISTINCT'的效果。无论如何,它应该吗? – alexx0186

1

我做你正在寻找的东西输出就像一个巨大的假设......

UserFred profile1 type1 
UserBill profile2 type1 
UserJim profile1 type8 

您需要在子选择应用GROUP BY语句...

INSERT INTO table2 (username,profile) 
    SELECT DISTINCT username,profile 
    FROM table1 WHERE profile='$profile' and username <> '$sender' 
    GROUP BY username;