MySQL选择选择“或”并按该字段排序

时间:2014-03-09 18:53:02

标签: php mysql select

表:

| 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");

我毫不怀疑这是一个非常简单的调整我需要做的;它不是我以前必须做的,而且我找不到符合所有标准的答案。

1 个答案:

答案 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注入等攻击。 编辑:哎呀 - 误读了您的代码!