将mysql查询作为数组传递给mysql In语句

时间:2014-11-28 12:53:42

标签: mysql

我有一个像

这样的查询
UPDATE myproject.empinfo SET country="XYZ" WHERE emp_id = 2 order by stars desc limit 5 ;
SELECT id FROM myproject.emp where version = 'New'

它将做的是将排名前5的员工国家/地区设置为XYZ,并按其明星排序。

但是在这个查询中,我已经将emp_id赋予了2 ...我可以轻松地为一个emp执行此操作,但现在我想要一个可以更新emp表中employee的所有empinfo的查询。

它应该在我的第二个查询中得到所有emp的id并使它们成为像(1,2,3,...)

的数组

并将其传递给

UPDATE myproject.empinfo SET country="XYZ" in($employeeIdarray) order by stars desc limit 5 ;

该employeeidarray应该是ids数组

如何在一个查询中执行此操作?

1 个答案:

答案 0 :(得分:1)

您可以使用GROUP_CONCAT和逗号将它们分开。

UPDATE myproject.empinfo 
SET country="XYZ" 
WHERE emp_id IN(select GROUP_CONCAT(id SEPARATOR ',') 
                  from myproject.emp 
                  where version = 'New') 
ORDER BY stars desc 
LIMIT 5;