作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 4 个表:
categories - id, position
subcategories - id, categories_id, position
sub_subcategories - id, subcategories_id, position
product - id, sub_subcategories_id, prod_pos
现在我正在做测试以找出我的查询有什么问题。
所以我想选择 sub_subcategories,并得到类似的东西:
[[1,2,3,4,5,6], [1,2,3,4,5,6,7]], [[1,2,3,4,5,6], [1,2,3,4]]
每个 [] 表示:大 - 类别,小 - 子类别,数字在 sub_subcategories 中的位置。我希望 [] 按其“位置”字段排序,因此查询:
SELECT id FROM sub_subcategories_id
WHERE subcategories_id IN (
SELECT id
FROM subcategories_id
WHERE categories_id IN (
SELECT id FROM categories
WHERE id = 'X' ORDER BY position)
ORDER BY position)
ORDER BY position
有点不对,因为我得到:
1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,6,6,6,7
不知道为什么 - 最后的“ORDER BY position”会破坏一切吗?
最佳答案
您需要在最外层查询中应用所有您想要的排序 - 子查询中的排序没有任何意义 - 问题“此 ID 在 <此列表> 中吗?”有相同的答案,无论列表是什么顺序(事实上,更多的属性,
因此,您需要在最外层查询中获取需要排序的所有列。
类似于:
SELECT ssi.ID
from
sub_subcategories_id ssi
inner join
subcategories_id si
on
ssi.subcategories_id = si.id
inner join
categories c
on
si.categories_id = c.id
where
c.id = 'X'
order by
c.position,
si.position,
ssi.position
关于php - SELECT * FROM table WHERE field IN (SELECT id FROM table ORDER BY field2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3608880/
我是一名优秀的程序员,十分优秀!