首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止从同一个MySQL表加载重复项?

问如何防止从同一个MySQL表加载重复项?
EN

Stack Overflow用户
提问于 2014-06-03 16:18:07
回答 2查看 37关注 0票数 0

我有一个MySQL表"news“,其中有一个名为"keyword”的字段。基于此,我在我的网站上找到了不同的部分。例如:

对于技术部分,我使用:

代码语言:javascript
复制
SELECT * from news where keyword like '%tech%'

关于最近的文章,第一节使用:

代码语言:javascript
复制
SELECT * from news 

现在的问题是,当这两个部分都加载时,我会看到重复的文章。我怎么才能阻止舞会的发生?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-03 16:34:13

以下是一个简单的解决方案:

首先,创建一个包含所有主题的数组:

代码语言:javascript
复制
$topics = array(
    "home",
    "tech",
    "cake",
    "animals",
    "gynecologogy",
    "recipes"
);

然后在页面的某个位置添加此函数,这将为您创建SQL查询:

代码语言:javascript
复制
function makeQuery($topic, $topics){
    $q = "SELECT * from news where keyword like '%".$topic."%' AND ";
    foreach($topics as $t){
        if($t == $topic){
            continue;
        }
        $q .= "keyword NOT LIKE '%".$t."%' AND ";
    }
    $q = rtrim($q, " AND ");
    return $q;
}

然后,您可以使用该函数创建查询。因此,例如,如果您仍在使用(是的,我知道) mysql_*函数,您可以将该函数用作您的查询,如下所示:

代码语言:javascript
复制
$Q = mysql_query(makeQuery("tech", $topics));

使用单个查询的:

如果要从单个查询中对它们进行排序,则可以使用以下内容。这只是一个例子。您将不得不修改代码以满足您的需要。

代码语言:javascript
复制
$articles = array();
$Q = mysql_query("SELECT * FROM `news`");
while($res = mysql_fetch_assoc($Q)){
    if(strpos($res['news'], 'tech') !== false){
        $articles['tech'] = $res;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2014-06-03 16:24:09

试一试

SELECT * from news where not exists (SELECT * from news where keyword like '%tech%')

所以你应该在第二个结果中不使用主题技术。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24020093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档