mysql-显示根据时间排序的用户列表

时间:2018-09-23 08:53:27

标签: mysql

我有一个页面,我想显示已注册付费订阅的用户列表。

该列表应根据另一个名为var unauthorizedPaths = [ '/', '/auth'] app.all('*', function(req, res, next) { if(unauthorizedPaths.indexOf(req.path) === -1) { if(req.user) next() else { res.redirect('/auth/login') res.end() } } }) 的表中的subscribed_time行进行排序。

这是我正在使用的查询

paid_subs

上面的查询正在做的只是向我提供具有付费订阅的用户列表。

我希望查询以SELECT * FROM user WHERE EXISTS ( SELECT * FROM paid_subs WHERE paid_subs.user_id= user.id ORDER BY paid_subs.subscribed_time DESC) 排序的顺序显示付费用户列表。

2 个答案:

答案 0 :(得分:0)

Exists只需检查相应记录是否存在并返回正确或错误的结果。如果要按另一个表中的字段排序,则必须使用联接。

SELECT * FROM user
INNER JOIN paid_subs ON paid_subs.user_id= user.id
ORDER BY paid_subs.subscribed_time DESC

答案 1 :(得分:0)

  • 您需要在user_id的两个表之间执行JOINInner Join将确保仅考虑已为订阅付费的那些用户。
  • 现在,执行一个简单的Order By以根据订阅时间对数据进行排序。
  • 此外,您应仅获取特定字段(根据您的应用程序代码要求),而不是使用通配符(*)。阅读:Why is SELECT * considered harmful?

使用以下查询:

SELECT u.*  -- please change this to specific fields, eg: u.id, u.name etc 
FROM user AS u 
INNER JOIN paid_subs ps ON ps.user_id = u.id 
ORDER BY ps.subscribed_time DESC