0

我有 Drupal 6 的这个 mysql 查询。但是它并没有像预期的那样返回不同的 nid。有人可以帮助识别我的代码中的错误吗?

    SELECT DISTINCT( n.nid), pg.group_nid, n.title, n.type, n.created, u.uid, u.name, tn.tid     FROM node n 
INNER JOIN users u on u.uid = n.uid 
LEFT JOIN og_primary_group pg ON pg.nid=n.nid 
LEFT JOIN term_node tn ON tn.vid=n.vid 
WHERE n.nid IN ( 
      SELECT DISTINCT (node.nid) 
      FROM node node 
      INNER JOIN og_ancestry og_ancestry ON node.nid=og_ancestry.nid 
      WHERE og_ancestry.group_nid = 134 ) 
        AND n.status<>0 
        AND n.type NOT IN ('issue') 
        AND tn.tid IN (
             SELECT tid FROM term_data WHERE vid=199 AND ( LOWER(name)=LOWER('Announcement') OR LOWER(name)=LOWER('Report') OR LOWER(name)=LOWER('Newsletter') 
     )) ORDER BY n.created DESC

我可以获得不同的 nid 的唯一方法是添加一个 groupby 子句,但这会破坏我的 Drupal 寻呼机查询。

4

3 回答 3

1

从查询的第一行中删除“Distinct”,因为您已经在 where 子句中有不同的 id。然后它应该工作。

于 2013-08-12T04:28:13.270 回答
1

DISTINCT 旨在返回所选的 DISTINCT 行,因此不是作为 select 子句的一部分的单个列,而是 ENTIRE select 子句。

选择语法

ALL 和 DISTINCT 选项指定是否应返回重复行。ALL(默认值)指定应返回所有匹配行,包括重复行。DISTINCT 指定从结果集中删除重复行。指定这两个选项是错误的。DISTINCTROW 是 DISTINCT 的同义词。

于 2013-08-12T05:52:29.390 回答
0

在 Mysql 中,具有 distinct 的结果由所有选定的列确定,而不是由不同的列确定,也许您应该编写另一个查询来获得不同的 nid。

于 2013-08-12T04:29:15.737 回答