在WordPress中查询自定义表以首先返回最近的行

时间:2014-05-13 19:59:47

标签: php mysql sql wordpress

我创建了一个自定义表格,用于存储'发布喜欢的内容。在WordPress中。

$sql[] = "CREATE TABLE IF NOT EXISTS {$table_prefix}like (
    id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    post_id bigint(20) NOT NULL,
    user_id bigint(20) NOT NULL,
        KEY recommenders (post_id, user_id)
) {$charset_collate};";

当用户点击'喜欢'在WordPress帖子上的按钮,一行被添加到表中,该行捕获用户的ID和帖子ID。

获取所有喜欢'的用户ID数组。我可以做一个特定的帖子:

$result = $wpdb->get_col( $wpdb->prepare( "SELECT user_id FROM {$table_prefix}like WHERE post_id = %d", $post_id ) );

我现在想做两件事:

  1. 如何修改我的查询,以便最先在$result数组中返回添加到表中的最新行?

  2. 我如何才能完成与问题1完全相同的操作,但只返回5行?

2 个答案:

答案 0 :(得分:1)

For 1:您可以id按降序排序,方法是在查询中添加ORDER BY `id` DESC

For 2:添加LIMIT 0, 5以及:

$result = $wpdb->get_col( $wpdb->prepare( "SELECT `user_id` FROM `{$table_prefix}like` WHERE `post_id` = %d ORDER BY `id` DESC LIMIT 0, 5", $post_id ) );

答案 1 :(得分:0)

  1. 为了确保ORDER BY作为ccKep提到,我会将LikeDate列作为DateTime(TimeStamp)添加到表中,然后在LikeDate列上使用ORDER BY。这可以确保您计算可能真正喜欢帖子的回访者。
  2. 如果您想知道在没有限制的情况下返回的总数,请参阅FOUND_ROWS Function