如何检查登录的用户id并在MySQL查询中首先返回该行


How do I check for logged in user id and return that row first in a MySQL query?

下面的查询选择物品上的"loves"。(把它想象成类似于facebooks的"like"系统。

此选择中有两个表正在使用。一个链接表(包含itemid、userid、lovetime),它被连接到一个users表,以便检索用户名/用户配置文件url等。

$lovequery = "select love.lovetime, love.userid as ID, love_users.display_name, love_users.user_url
                    from ".$wpdb->prefix."comment_loves love
                    left join ".$wpdb->prefix."users love_users on love_users.ID=love.userid
                    where commentid = $itemid                   
                    order by love.lovetime desc
                    limit 4
             "; 

结果被限制为4,因为我根本不需要更多的数据。总计数单独存储在实际项目表中,以减少查询。

从这个查询中检索到行后,我遍历数组,对总的"lovecount"进行交叉引用,并构建一个格式如下的文本字符串:

You, John Smith, Joe Bloggs and 4 others love this.

这很好,但如果登录用户(你)没有最近的"恋爱时间",它就会失败

我想做的是让当前登录的使用始终位于返回结果的顶部,即使他/她的"lovetime"比最近的4个旧,这样,如果登录用户"喜欢"这个项目,字符串总是以"You"开头。

已登录的用户id在脚本中可用$userid。

澄清

如果我有下表(为了易读起见,时间戳写为简单的英国日期):-

    userid  commentid  lovetime
    34       3          02/10/2011
    24       3          03/10/2011
    13       3          06/10/2011
    65       3          14/10/2011
    1*       3          10/09/2011
* with userid 1 being the logged in user id

由于"lovetime"的订购,我只会在该订单中返回用户id的34,24,13,65

我想要的是结果返回理想的1,34,24,65。如果这太棘手了,那么当userid存在时,总共获得5行也是可以的。

我希望这一点足够清楚,很难表达出来。

我该如何修改查询以确保结果如所述。

非常感谢。

您可以根据ORDER BY (ID = "auth_user_id") DESC 等条件对结果进行排序