我正面临一个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'
我怎样才能实现这一点。
答案 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