Необходимо удалить случайные кортежи из базы данных в SQL - PullRequest
1 голос
/ 29 октября 2011

Мы нанимаем сторонних инженеров-тестировщиков и программистов, которые помогут нам с некоторыми ошибками на нашем сайте.Они будут работать над бета-установкой нашего веб-приложения.Дело в том, что нам нужно предоставить им копию нашей базы данных, мы не хотим предоставлять всю базу данных, это огромная база данных компаний.Таким образом, мы хотели бы дать им разбавленную версию, в которой содержится меньше доли фактических данных - достаточно для проведения правильного теста.

У нас есть данные в следующей схеме:

COMPANIES
ID|NAME|CATEGORY|COUNTRY_ID.....

У нас также есть определенное количество категорий и стран.

Дело в том, что мы не хотим, чтобы удаление было слишком случайным, в основном из сотен тысяч записей, которые нам нужнычтобы дать им версию, которая содержит несколько сотен записей, но такая, что у вас есть по крайней мере 2-3 компании для каждой страны и категории.

Я немного озадачен тем, как сделать запрос выбора с помощьюВышеупомянутое ограничение намного меньше удаляет.

Это база данных MySQL, которую мы будем использовать здесь.Можно ли это сделать даже в SQL или нам нужно сделать скрипт на php или около того?

Ответы [ 2 ]

1 голос
/ 29 октября 2011

После выбора оператора будут выбраны компании с первыми 3 id в порядке возрастания для каждой комбинации category, country_id:

select id, name, category, country_id
from companies c1
where id in (
              select id
              from companies c2
              where c2.category=c1.category and c2.countr_id=c1.country_id
              order by id
              limit 3
            );
0 голосов
/ 29 октября 2011

Не уверен, что мой ответ будет соответствовать вашим потребностям, так как я делаю некоторые предположения, которые могут быть неправильными, но вы можете попробовать следующий подход:

select category, country_id, min(id) id1, max(id) id2
  from companies
 group by country_id, category
 order by country_id, category

Этот запрос дает вам только 2 идентификатора компании вместо 3и они будут первым и последним идентификатором, который соответствует категории и стране.

Обратите внимание, что я написал это в своем уме и у меня нет движка MySQL для его проверки.

Надеюсь, это поможет или хотя бы подскажет, как это сделать.

...