【发布时间】:2012-06-27 02:46:15
【问题描述】:
我想创建一个 SQL 查询来选择 我数据库中的女性照片然后随机选择男性照片而不是随机选择男性照片。例如,有 40 张女孩的照片和 60 张男孩的照片。我希望选择第 40 张女孩的照片(打乱,然后选择剩余的男孩照片(打乱)
希望我很清楚。我有两个表,“userID”字段是链接两个表的字段。
用户表(年龄、用户ID、性别)|图片表(用户ID, 点赞数,图片位置)
无论如何我可以生成这个查询吗?
【问题讨论】:
我想创建一个 SQL 查询来选择 我数据库中的女性照片然后随机选择男性照片而不是随机选择男性照片。例如,有 40 张女孩的照片和 60 张男孩的照片。我希望选择第 40 张女孩的照片(打乱,然后选择剩余的男孩照片(打乱)
希望我很清楚。我有两个表,“userID”字段是链接两个表的字段。
用户表(年龄、用户ID、性别)|图片表(用户ID, 点赞数,图片位置)
无论如何我可以生成这个查询吗?
【问题讨论】:
SELECT picure_location
FROM Picture
INNER JOIN User ON Picture.UserID=User.UserID
ORDER BY gender,RAND()
您可能需要ORDER BY GENDER DESC, RAND(),具体取决于您代表性别的方式。
【讨论】:
请尝试以下方法:
SET @num1=0, @num2=0;
SELECT t1.*, p1.picturelocation,t2.*, p2.picturelocation
FROM (
SELECT UserID,gender, @num1:=@num1+1 AS num
FROM UserTable WHERE gender='Female'
) AS t1
INNER JOIN (
SELECT UserID,gender, @num2:=@num2+1 AS num
FROM (
SELECT *
FROM UserTable WHERE gender='Male'
ORDER BY RAND()
LIMIT 40
) AS t
) AS t2
ON t1.num = t2.num
INNER JOIN PictureTable p1 on t1.userid=p1.userid
INNER JOIN PictureTable p2 on t2.userid=p2.userid;
【讨论】: