SQL - 使用列名的值作为参数

时间:2013-11-17 00:39:15

标签: mysql sql

我有一个SQL查询来获取用户拥有的“喜欢”数量。有两个不同的表,一个表包含不同的用户数据(不是喜欢的数量)。另一张表中包含类似的日志,例如谁给出了类似的内容,谁接收了类似内容,何时受到喜欢等等。我正在创建最喜欢的用户的前十名列表。

我想知道的是,在运行查询时是否可以使用列的当前值作为参数,如下所示:

SELECT `username` FROM `users` ORDER BY (SELECT COUNT(*) FROM `likes` WHERE `liked_user`=?) LIMIT 10

问号会被代表username的当前值的东西替换(我假设SQL必须做某种循环才能得到结果)

我的另一个选择是在用户表中有一个列,其中包含喜欢的数量,然后根据它进行排序,但我想知道查询是否可以通过查看类似的日志来执行相同的工作。

1 个答案:

答案 0 :(得分:2)

是的,你可以这样做。应该如此简单:

SELECT u.`username`
FROM `users` u
ORDER BY (SELECT COUNT(*)
          FROM `likes` l
          WHERE l.`liked_user` = u.`username`)
LIMIT 10

您也可以在没有子查询的情况下执行相同操作:

SELECT u.`username`
FROM `users` u
JOIN `likes` l ON l.`liked_user` = u.`username`
GROUP BY u.`username`
ORDER BY COUNT(*)