下面的代码有效,但是当我将 Order by id 更改为 Order by s.id 时,出现此错误
Unknown column 's.id' in 'order clause'
$construct = "SELECT child.* FROM products child LEFT JOIN products parent on parent.name=child.parent INNER JOIN subscribe s ON (s.productid = parent.id) WHERE s.username='$logged' AND s.type='0'
UNION
SELECT child.* FROM products child LEFT JOIN products parent on parent.sid=child.sid INNER JOIN subscribe s ON (s.productid = parent.id) WHERE s.username='$logged' AND parent.keyword != child.name AND s.type='1'
ORDER BY s.id DESC";
如何更改代码,使其按 s.id(订阅表的 id)排序?
最佳答案
MySQL 正在尝试将 ORDER BY 应用于 UNION,但 UNION 只有 child
列(没有 child.
前缀),则没有 s.id
在联盟中。但您可以添加一个:
SELECT child.*, s.id as sid ...
UNION
SELECT child.*, s.id as sid ...
ORDER BY sid DESC
您需要给它一个别名,因为 UNION 会去掉表名或别名前缀。如果有sid
child
中的专栏然后使用其他内容作为 s.id
的别名.
关于MySQL 的联合和排序通过帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7278959/