表:
| object_id | term_taxonomy_id |
|-----1------|-------------2----------|
|-----2------|-------------2----------|
|-----1------|-------------3----------|
|-----3------|-------------2----------|
|-----4------|-------------3----------|
|-----4------|-------------2----------|
使用MySQL我想选择不同的* object_id *,其中分类法是2或3,并按分类法desc进行排序。
我在下面尝试了这个,基本上可行,但是当你添加DISTINCT时它不会对结果进行排序。
$sql_feed = mysqli_query($con,"SELECT DISTINCT object_id FROM wp_term_relationships WHERE term_taxonomy_id='2' OR term_taxonomy_id='3' ORDER BY term_taxonomy_id DESC");
我毫不怀疑这是一个非常简单的调整我需要做的;它不是我以前必须做的,而且我找不到符合所有标准的答案。
答案 0 :(得分:0)
您遇到的问题是查询是对术语进行排序,然后选择不同的术语,再次为您提供无序结果。您想要做的是先使用GROUP BY
对结果进行分组,然后按每个组的最大值排序,这样您的DISTINCT
子句只会从每个组中选出一个项目...
SELECT DISTINCT object_id
FROM wp_term_relationships
WHERE term_taxonomy_id='2' OR term_taxonomy_id='3'
GROUP BY object_id
ORDER BY MAX(term_taxonomy_id) DESC
作为旁注,您应该放弃旧的 编辑:哎呀 - 误读了您的代码! mysql_
函数,这些函数现在已从PHP 5.5开始弃用,并转向使用MySQLi或PDO的参数化查询。这使您可以使用最新的更新,并有助于提高安全性,防止SQL注入等攻击。