2009-08-28 3 views
1

Я хочу использовать это, чтобы получить данные из строки из базы данных MySQL в текстовые файлы (один вход под другим, 50 записей в файл):Этот код удаляет дубликаты?

$ mysql --user=XXX --password=XXX --batch --skip-column-names \ 
-e "SELECT userid, displayname FROM Users" stackoverflowdb | \ 
split -l 50 -a 5 - "result." 

, но я также не хочу, чтобы скопировать дубликаты записей в эти файлы. Будет ли этот код удалять дубликаты или мне нужно что-то добавить к нему, чтобы не копировать дубликаты записей?

+0

Вы имеете в виду, чтобы дублировать записи в таблице пользователей? –

+0

да, я не хочу дублировать записи оттуда – Phil

ответ

3

Изменение SQL использовать DISTINCT директиву

например

SELECT DISTINCT userid,displayname FROM Users 

будет гарантировать, что будут выбраны только уникальные комбинации идентификаторов пользователя и displayname.

Однако это не будет препятствовать идентификаторам пользователей, которые имеют идентичные отображаемые имена.

+0

отлично, спасибо. upvoted. просто хотел убедиться ... текстовые файлы будут созданы в каталоге i cd to? – Phil

+1

Я думаю, что split будет создавать их в текущем рабочем каталоге по умолчанию, да. – cms

+0

ОК, я побежал его таким образом, и он, похоже, работает ... потрясающий! XD – Phil

1
SELECT DISTINCT userid,displayname FROM Users 

.. или вне базы данных

mysql --user=XXX --password=XXX --batch --skip-column-names \ 
-e "SELECT userid, displayname FROM Users" stackoverflowdb | \ 
sort -u | \ 
split -l 50 -a 5 - "result." 
Смежные вопросы