Mysql: выбор одной таблицы и ограничение результата строки для каждого значения столбца - PullRequest
0 голосов
/ 02 июля 2019

У меня есть запрос MySQL, над которым я работал со вчерашнего дня, который я не смог исправить.Я также просматривал много поиска в Google, а также здесь в stackoverflow, который я до сих пор не могу найти жизнеспособное решение.

В моей проблеме, у меня есть одна таблица Users, которая имеет столбец:идентификатор, имя, пол, город, гражданство.Таблица содержит тысячи записей.

Таблица выглядит примерно так:

-------------------------------------------
| id | name | gender | city | citizenship |
-------------------------------------------
| 1 | alfred | m | new york | american    |
-------------------------------------------
| 2 | benny | f | london | british        |
-------------------------------------------
| 3 | george | m | brisbane | australian  |
-------------------------------------------
| 4 | itachi | m | tokyo | japanese       |
-------------------------------------------
| 5 | jenny | f | lauderdale | american   |
-------------------------------------------

и т. Д. ... около тысячи записей ..

Теперь моя проблема, я хочу запросить эту таблицу (Пользователи) на основе определенных критериев.

Например, я хотел бы запросить по крайней мере 50 мужчин и 50 женщин, то есть всего 100 записей.

ЧтоТакже необходимо, чтобы какой-то пользователь, по крайней мере, 30 из них были в Нью-Йорке, еще 30 из них - в Лондоне, еще 40 из них - в Брисбене.в общей сложности 100 записей.

Кроме того, независимо от того, в каком городе они находятся, необходимо, чтобы какой-либо пользователь имел гражданство, по крайней мере 60 из них - американцы, 20 британцев и 20 австралийцев.

Этомой текущий запрос, который я пробовал, что-то вроде этого, с подзапросом:

SELECT 
    *
FROM
    (
        SELECT gender as genderMale
        FROM users 
        WHERE gender = 'M'
        LIMIT 50
    ) AS myMale,

    (
        SELECT gender as genderFemale
        FROM users 
        WHERE gender = 'F'
        LIMIT 50
    ) AS myFemale,

    (
        SELECT city as cityNewYork
        FROM users 
        WHERE city = 'new york'
        LIMIT 30
    ) AS myCityNewYork,

    (
        SELECT city as cityLondon
        FROM users 
        WHERE city = 'london'
        LIMIT 30
    ) AS myLondon,

    (
        SELECT city as cityBrisbane
        FROM users 
        WHERE city = 'brisbane'
        LIMIT 40
    ) AS myBrisbane

и так далее для гражданства .. и т.д ..

Результат также дал больше, чем я хотел,

Есть ли способ достичь этого в MySQL?

Ваша помощь с благодарностью.

Спасибо


ОБНОВЛЕНИЕ: SQL Fiddle

http://sqlfiddle.com/#!9/499874

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...