MySQL" OR"导致错误" ORDER BY"

时间:2016-03-08 14:34:07

标签: mysql

我得到了以下查询。

SELECT t1.parent_id
     , t1.id
     , t2.slug     
  FROM t1    
  LEFT 
  JOIN t2 
    ON t2.node_id = t1.id              
 WHERE t1.id
   AND
     ( t1.parent_id = 501  
    OR t1.parent_id = 750  
     )
   AND t2.display = 1
   AND t2.active = 1
 ORDER 
    BY t1.name ASC

似乎有效,但排序错误(我可能错了 - 不是订购)。它就像GROUP BY t1parent_id ...

使用此表:

--------------
name  |  parent_id
a     |  501
b     |  750
c     |  501
d     |  750
--------------

我得到了这个结果:

a
c
b
d

但我希望如此:

a
b
c
d

感谢您的时间和帮助...

更新:

@Juan Carlos Oropeza谢谢你。我在phpMyAdmin中运行代码 - 结果相同。我改为INNER JOIN并删除了WHERE t1.id(尽管没有伤害)并使用t1 . parent_id`IN(501,750)代替:

mysql_query("
    SELECT 
        `t1`.`parent_id`,
        `t1`.`id`,
        `t2`.`slug`     
    FROM 
        `t1`    
    INNER JOIN
        `t2`    ON `t2`.`node_id` = `t1`.`id`               
    WHERE       
        `t1`.`parent_id` IN (501, 750)
    AND
        `t2`.`display` = 1
    AND
        `t2`.`active` = 1
    ORDER BY 
        `t1`.`lft`
    ASC
");

相同的结果

1 个答案:

答案 0 :(得分:0)

我发现了问题......数据在t1.name中存在缺陷。所以查询实际上应该有效。谢谢你的帮助!