我有两张桌子:
`users`
`id` INT(11)
`name` VARCHAR(30)
`items`
`id` INT(11)
`name` VARCHAR(30)
`owner` VARCHAR(30)
以下是我的问题:我尝试按users
表中的唯一项目数量对items
表进行排序。
获取唯一数量的项目:
SELECT * FROM `items` WHERE `owner`='".$ownername."' GROUP BY `name`
运行此查询会为我提供一些$ownername
的唯一项目数。
我尝试做的是按users
表格中的唯一项目数量排序items
表格,我不知道我会怎样做那样做。
答案 0 :(得分:2)
您可以按计数加入,分组和排序:
SELECT u.name
FROM users u
JOIN items i
WHERE u.owner='".$ownername."'
GROUP BY u.name
ORDER BY COUNT(i.id) DESC
或者您可以按子选择的结果排序,该子选择计算每个用户的项目:
SELECT u.name
FROM users u
WHERE u.owner='".$ownername."'
ORDER BY
(SELECT COUNT(*) FROM items i WHERE i.owner = u.name) DESC
后者如果你想显示值,你也可以稍微改写一下:
SELECT u.name,
(SELECT COUNT(*) FROM items i WHERE i.owner = u.name) as item_count
FROM users u
WHERE u.owner='".$ownername."'
ORDER BY
item_count DESC
答案 1 :(得分:0)
我使用了import dj_database_url
DATABASES = {}
DATABASES['default'] = dj_database_url.config()
DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2'
,因此没有项目的用户也会出现。
left join