我有表categories
:
categories_id | categories_status | parent_id
1 1 0
2 1 0
3 0 1
4 0 2
5 1 1
6 0 2
如何选择和更新状态为0的所有子类别的类别的状态(在此示例中,它只是categories_id 2)?我需要在PHP中集成它。
提前致谢,
亚历
答案 0 :(得分:1)
update categories,
(
select parent_id, sum(categories_status) as cnt
from categories
where parent_id!=0
group by parent_id
having cnt=0
) as child_cat
set ? = ? /* what do you want to update? */
where categories.categories_id=child_cat.parent_id
可能你不必使用PHP,SQL会这样做。
答案 1 :(得分:1)
我在MSSQL上对此进行了测试,因此语法可能略有不同,但我相信这就是你所追求的:
SELECT * FROM <table_name> WHERE parent_id NOT IN
(
SELECT parent_id
FROM <table_name>
WHERE categories_status = 1
GROUP BY parent_id
)
更新查询:
UPDATE <table_name>
SET categories_status = 1
WHERE parent_id NOT IN
(
SELECT parent_id
FROM <table_name>
WHERE categories_status = 1
GROUP BY parent_id
)
我们的想法是隔离您要从基本查询中排除的parent_id。您可以使用子查询来实现这一目标。