2011-05-25 121 views
0

查询将返回我的结构如下:MySQL查询帮助

24 | 24,879 
45 | 657,45 
77 | 77,15 

等,使用PHP,我可以得到一个数组,喜欢!

$array = (24=>"24,879",45=>"657,45",77=>"77,15"); 

现在我需要什么,就像是第二个查询:

update $table set $col = 24 if $col in (24,879) 

更确切地说,是这样的:

foreach($array as $k=>$v) { 
mysql_query("update `$table` set `$col` = $k if `$col` in ($v)"); 
} 

棘手的,不是吗?帮助将不胜感激。

编辑:返回以逗号分隔的东西查询低于:

SELECT n.id, o.email, count(o.email) AS c, 
CAST(GROUP_CONCAT(DISTINCT o.id) AS char) AS nid 
FROM 0_member AS n JOIN member_base AS o ON o.email = n.login_userid 
GROUP BY o.email HAVING c >1 
+3

究竟是什么问题? (“Tricky,是不是?”的答案是“是,它是”:D) – MeLight 2011-05-25 11:28:23

+0

你能向我们展示返回该结构的查询吗? – 2011-05-25 11:34:24

+0

@ypercube,已更新 – 2011-05-25 11:42:32

回答

0

你需要的是:

UPDATE table SET column = 24 WHERE column IN (24, 879) 
+0

这么简单? – 2011-05-25 11:30:40

+0

不,这不是他所需要的,显然他在其专栏中存储了多个由字符串隔开的值。所以使用IN将不起作用。 – wimvds 2011-05-25 11:31:52

+0

嗯,我得到了24,879使用'CAST(GROUP_CONCAT(DISTINCT old.id)AS char)作为newID'在一个不同的查询,我上面提到。现在这是否改变了NA的答复? – 2011-05-25 11:34:37

0

爆炸包含在$v的数据,然后运行之前运行的if查询mysql数据。