Php 查询以获取主要获胜的用户
我有两个表film和users,我使用这个查询来获取优胜者的用户Php 查询以获取主要获胜的用户,php,mysql,Php,Mysql,我有两个表film和users,我使用这个查询来获取优胜者的用户 $winners_query=("Select * from users where user_id IN (Select user_id from film where iswinningclip=1) order by user_id desc limit 12"); 我很难编写一个查询来对数据进行排序,以便大多数情况下获胜的用户应该排在第一位,以此类推 这对我不起作用 $winners_query=("Select *
$winners_query=("Select * from users where user_id IN (Select user_id from film where iswinningclip=1) order by user_id desc limit 12");
我很难编写一个查询来对数据进行排序,以便大多数情况下获胜的用户应该排在第一位,以此类推
这对我不起作用
$winners_query=("Select * from users where user_id IN (Select count(user_id) AS CN from film where iswinningclip=1 oder by CN desc) order by user_id desc limit 12");
用户表包含用户id和其他相关字段,胶片表包含胶片id、用户id、iswinningclip
有人能推荐我吗
谢谢首先选择userid和iswinningclip,然后按userid应用group,这样您将获得iswinningclip的总计数,然后在该列上应用max函数。这就是获胜的id。在这种情况下,您可以使用连接,否则您使用的查询看起来更复杂
SELECT users.*, film.*
FROM users
inner join
film
On (users.id = film.user_id)
WHERE film.iswinningclip = 1
Group by users.id
Order by count(users.id) DESC
在user_id上使用两个表的联接,将条件设置为winningclip=1,应用group by userid,最后根据user_id的计数按降序排列结果 查询应该是
SELECT
u.id, u.username, u.gender //select as many columns you want from users
FROM
users u
JOIN
film f ON (u.id = f.user_id)
WHERE
f.iswinningclip = 1
GROUP BY u.id
ORDER BY COUNT(u.id) DESC
完整示例
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
username VARCHAR(45) NULL,
gender VARCHAR(45) NULL,
PRIMARY KEY (id));
CREATE TABLE film (
id INT NOT NULL AUTO_INCREMENT,
user_id INT NULL,
film_id INT NULL,
iswinningclip INT NULL,
PRIMARY KEY (id));
INSERT INTO users (username, gender) VALUES ('Kiran', 'M');
INSERT INTO users (username, gender) VALUES ('Liza', 'F');
INSERT INTO users (username, gender) VALUES ('Ajith', 'M');
INSERT INTO film (film_id, user_id, iswinningclip) VALUES ('1', '1', '1');
INSERT INTO film (film_id, user_id, iswinningclip) VALUES ('1', '2', '1');
INSERT INTO film (film_id, user_id, iswinningclip) VALUES ('2', '1', '0');
INSERT INTO film (film_id, user_id, iswinningclip) VALUES ('2', '2', '1');
INSERT INTO film (film_id, user_id, iswinningclip) VALUES ('3', '3', '1');
SELECT
u.id, u.username, u.gender
FROM
users u
JOIN
film f ON (u.id = f.user_id)
WHERE
f.iswinningclip = 1
GROUP BY u.id
ORDER BY COUNT(u.id) DESC
结果
试试这个,它会帮你的
SELECT users.*, count(film.user_id) as no_of_awards
FROM users join film
On (users.user_id = film.user_id)
WHERE film.iswinningclip = 1
Group by users.user_id
Order by no_of_awards DESC
你好你能告诉我们这张表上两个表的结构吗?编辑你的问题和世卫组织的样本数据和期望的结果。请参阅。把它装起来。显示预期结果。帮助我们帮助你:p。。。如果这个链接太混乱,转到第2节it@LizaAsh我已经用一个例子给出了答案。检查一下这是否是你想要的条件应该是什么?你到底想要什么?在你的查询中放入什么条件我希望首先出现的用户的剪辑是WinningClip=1最长时间它给出了获胜剪辑的总数
select userid,count(ISWINING)作为x从film group按用户ID排序按x desc排序:这里的冒号是userid、filmid和ISWINING(这个冒号只有1和0)这位工作人员,现在我有一个问题,就是当用户滚动记录扩展时,我正在使用ajax进行分页,我一直在用ajax传递用户id,这样当用户滚动时,应该执行“$winners\U query=”(“选择用户。*,将(film.user\u id)计数为用户加入film On(users.user\u id=film.user\u id)时没有奖励其中film.iswinningclip=1和users.user_id<$get_id Group by users.user_id Order by no_of_awards DESC limit 12”);“现在我应该在url中传递什么,以便获得较少奖励的用户出现。