MySQL Distinct子句问题

时间:2014-08-25 05:37:07

标签: php mysql sql wordpress

我正面临一个MySQL Distinct子句的奇怪问题。我正在尝试与内部联接区分,但是重复相同的术语名称和object_is。我想要相同的名称或object_id不重复。

修改

就表名重复而言,在term_relations terma_taxonomy_id和对象重复,我希望这些值不重复。

注意:我在wordpress工作

这是我的代码:

Select Distinct wTerm.*, wTermTax.*, wTermRel.*
From wp_terms As wTerm
Inner Join wp_term_taxonomy As wTermTax
On wTerm.term_id = wTermTax.term_id
Inner Join wp_term_relationships As wTermRel
On wTermTax.term_taxonomy_id = wTermRel.term_taxonomy_id
Where wTermRel.object_id In(140,99,89,87,58)
And wTermTax.taxonomy = 'pa_garment-type'

我怎样才能实现这一点。

2 个答案:

答案 0 :(得分:1)

Distinct为您选择唯一的记录,而不是唯一字段。

如果您希望字段值是唯一的,根据您要实现的目标,您应该对记录进行分组或进行多次查询,例如我认为这样的事情会起作用:

SELECT DISTINCT wTerm.name AS name, 
(SELECT DISTINCT terma_taxonomy_id FROM term_relations) AS taxonomy_id,
(SELECT DISTINCT object FROM term_relations) AS object
FROM wp_terms

答案 1 :(得分:1)

正如@Logar所说,distinct会寻找一个独特的记录。根据你的问题,你需要的是使用像这样的Group By子句

SELECT column1, column2
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2

您将在group by中使用Column1,column2作为您希望唯一基于的列。 请注意这个https://stackoverflow.com/questions/2421388/using-group-by-on-multiple-columns。还要注意,group by允许你做聚合函数。如果你不需要执行聚合函数,你应该使用distinct,但在你的情况下你应该指定特定的唯一列{ {1}}最适用于此处。

Group By