我有一个MySQL表"news“,其中有一个名为"keyword”的字段。基于此,我在我的网站上找到了不同的部分。例如:
对于技术部分,我使用:
SELECT * from news where keyword like '%tech%'关于最近的文章,第一节使用:
SELECT * from news 现在的问题是,当这两个部分都加载时,我会看到重复的文章。我怎么才能阻止舞会的发生?
发布于 2014-06-03 16:34:13
以下是一个简单的解决方案:
首先,创建一个包含所有主题的数组:
$topics = array(
"home",
"tech",
"cake",
"animals",
"gynecologogy",
"recipes"
);然后在页面的某个位置添加此函数,这将为您创建SQL查询:
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_*函数,您可以将该函数用作您的查询,如下所示:
$Q = mysql_query(makeQuery("tech", $topics));使用单个查询的:
如果要从单个查询中对它们进行排序,则可以使用以下内容。这只是一个例子。您将不得不修改代码以满足您的需要。
$articles = array();
$Q = mysql_query("SELECT * FROM `news`");
while($res = mysql_fetch_assoc($Q)){
if(strpos($res['news'], 'tech') !== false){
$articles['tech'] = $res;
}
}发布于 2014-06-03 16:24:09
试一试
SELECT * from news where not exists (SELECT * from news where keyword like '%tech%')
所以你应该在第二个结果中不使用主题技术。
https://stackoverflow.com/questions/24020093
复制相似问题