2014-11-28 2 views
1

У меня есть запрос, какPass MySQL запрос как массив в 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 легко, но теперь мне нужен запрос, который может обновлять все empinfo для сотрудника в emp-таблице.

Он должен получить идентификаторы всех эй, как в моем втором запросе и сделать их массив, как (1,2,3, ..)

и передать его как

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

что employeeidarray должен быть массивом идентификаторов

Как это сделать в одном запросе?

+0

Вы используете PHP? Похоже, вы работаете с '$ employeeIdarray'. Если это так, пометьте свой вопрос тегом PHP и используйте 'implode (", ", $ employeeIdarray)' для запятой разделить ваши значения. –

+0

Нет, я хочу, чтобы это было сделано в mysql-скрипте – roanjain

+0

Мне нужен запрос mysql для этого, который я могу запустить в workbench – roanjain

ответ

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; 
+0

запрос показывает ошибку в sql-синтаксисе для '=' – roanjain

+0

Check edit :) Случайно положил '= IN' –

Смежные вопросы