我想這個代碼phpmysqlMySQL查詢與內部聯接返回重複錄入
SELECT p.ID, p.post_title, p.post_name
FROM `wp6p_popularpostsdata` AS pps
INNER JOIN `wp6p_posts` AS p ON pps.`postid`= p.`ID`
WHERE p.post_type = "post"
AND pps.last_viewed > DATE_SUB(CURDATE(), INTERVAL 1 WEEK)
ORDER BY pps.`pageviews` DESC
LIMIT 4
,並正確地給出了結果
1336Reading Between The Lines. reading-between-the-lines
824 Benefits of Watching Anime benefits-of-watching-anime
1427 The Day Goes By. life-goes-by
1950 Click here if you want to be rich want-to-be-rich
但是,當我在我的PHP文件中使用它,它返回
閱讀之間的線。在線之間閱讀。日子過去了。觀看動畫的好處
global $wpdb;
$interval = "1 WEEK";
$now = current_time('mysql');
$top4 = $wpdb->get_results(
'SELECT p.ID, p.post_title, p.post_name
FROM `' . $wpdb->prefix . 'popularpostssummary` AS pps
INNER JOIN `' . $wpdb->prefix . 'posts` AS p ON pps.`postid`= p.`ID`
WHERE p.post_type = "post"
AND pps.last_viewed > DATE_SUB("' . $now . '", INTERVAL ' . $interval . ')
ORDER BY pps.`pageviews` DESC
LIMIT 4;', ARRAY_A
);
foreach($top4 AS $index => $row) {
$class = ($index == (count($top4) - 1)) ? ' last' : '';
$url = get_permalink($row['ID']);
echo '<li class="trendingPost'.$class.'">' .
'<a href="' . $url . '">'.$row['post_title'].'</a></li>';
}
如何防止重複結果?
不要忘記在查詢中包含'post_status =「發佈」'。同時檢查您的popularposts表中是否存在多個記錄 –
謝謝,我可以使用兩個AND嗎? 等,其中p.post_type = 「POST」 AND p.post_status = 「發表」 和pps.last_viewed> DATE_SUB(CURDATE(),間隔1周) –
是的,你可以結合的條件;我想你打的第一個限制是[max_allowed_packet](https://dev.mysql.com/doc/refman/5.7/en/packet-too-large.html);-) – VolkerK