Php MySQL:在select查询中获取多个值的部分值

Php MySQL:在select查询中获取多个值的部分值,php,mysql,sql,select,Php,Mysql,Sql,Select,这是我得到的带有表名照片的表: photo_id user_id 401 1 403 1 405 1 407 2 408 1 409 2 410 1 411 3 412 2 413 2 4

这是我得到的带有表名照片的表:

photo_id   user_id
401           1     
403           1     
405           1 
407           2     
408           1     
409           2      
410           1     
411           3      
412           2          
413           2      
420           2      
423           2
我目前正在使用该查询

SELECT *
FROM photos
WHERE user_id
IN ( 1, 2 )
LIMIT 0 , 6
内的ID可以有多个值,而不仅仅是两个值

我得到的是

photo_id   user_id
401           1     
403           1     
405           1 
407           2     
408           1     
409           2     
没有每个用户id的比例值

我想要的是从两个用户ID中获得相等比例的值。也就是说,如果取数限制为6,那么我需要3个值,如果1和3的元素少于3,那么我需要小于3的值;如果2的元素少于3,那么我需要小于3的值

如果有3个用户ID,取数限制为6;所有三个ID的结果值均为2

photo_id   user_id
401           1     
403           1     
405           1 
407           2     
409           2      
412           2     

我可以在多个查询中完成它;但有没有办法在单个查询中实现这一点

考虑以下几点

DROP TABLE IF EXISTS photos;

CREATE TABLE photos
(photo_id   INT NOT NULL PRIMARY KEY
,user_id INT NOT NULL
);

INSERT INTO photos VALUES
(401           ,1),     
(403           ,1),     
(405           ,1),     
(407           ,2),     
(408           ,1),     
(409           ,2),     
(410           ,1),     
(411           ,3),     
(412           ,2),     
(413           ,2),     
(420           ,2),     
(423           ,2);

SELECT x.*
     , COUNT(*) rank 
  FROM photos x 
  JOIN photos y 
    ON y.user_id = x.user_id 
   AND y.photo_id <= x.photo_id 
 GROUP 
    BY x.photo_id
     , x.user_id 
 ORDER 
    BY user_id
     , rank;
+----------+---------+------+
| photo_id | user_id | rank |
+----------+---------+------+
|      401 |       1 |    1 |
|      403 |       1 |    2 |
|      405 |       1 |    3 |
|      408 |       1 |    4 |
|      410 |       1 |    5 |
|      407 |       2 |    1 |
|      409 |       2 |    2 |
|      412 |       2 |    3 |
|      413 |       2 |    4 |
|      420 |       2 |    5 |
|      423 |       2 |    6 |
|      411 |       3 |    1 |
+----------+---------+------+
如果存在照片,则删除表格;
创建桌面照片
(photo_id INT非空主键
,用户id INT不为空
);
在照片中插入值
(401           ,1),     
(403           ,1),     
(405           ,1),     
(407           ,2),     
(408           ,1),     
(409           ,2),     
(410           ,1),     
(411           ,3),     
(412           ,2),     
(413           ,2),     
(420           ,2),     
(423           ,2);
选择x*
,COUNT(*)秩
从照片x
加入照片
在y.user\u id=x.user\u id上

谢谢你的照片;得到了答案;但只要稍作改动,就需要按级别、用户id排序;