我有一些自昨天以来一直在处理的MySQL查询,但我无法纠正。我也一直在通过Google和stackoverflow中的大量搜索进行搜索,但我仍然找不到可行的解决方案。
在我的问题中,我有一张表Users,其中有一列:id,姓名,性别,城市,公民身份。该表包含数千条记录。
表看起来像这样:
-------------------------------------------
| 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小提琴