MySQL“;或;结果是错误的”;“订购”;
我得到了以下问题MySQL“;或;结果是错误的”;“订购”;,mysql,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.
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
似乎有效,但顺序是错误的(我可能错了-不是顺序)。它类似于组BYt1
parent\u id
使用此表:
--------------
name | parent_id
a | 501
b | 750
c | 501
d | 750
--------------
我得到这个结果:
a
c
b
d
但我希望:
a
b
c
d
谢谢你的时间和帮助
更新:
@胡安·卡洛斯·奥罗佩扎,谢谢你。我在phpMyAdmin中运行了代码-结果相同。我改为“内部联接”,删除了WHERE t1.id(虽然没有影响),并在(501750)中使用了t1
parent_id`IN:
同样的结果我发现了问题。。。数据在t1中。名称有缺陷。因此,查询实际上按其应有的方式工作。谢谢你们的帮助,伙计们 没有任何意义。试试
选择字符长度(t1.parent\u id)
也许你有特殊的字符。试着在这里复制样本,我们来看看你得到这个结果是什么意思?复制您得到的确切结果!顺便说一句,这是一个内部连接如果你直接在mySQL上运行代码得到相同的结果?附加提示您可以在(501750)中使用t1.parent\u id<代码>其中t1.id
条件也没有任何意义。如果您想要t2.display
有任何值,您不使用左连接
使用内部连接
而不是代替t1.parent\u id为int(11)
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
");