我有一个包含这些值的表:
id
parent_id
type
如果满足以下条件,我想编写一个将在变量中创建并存储为1的查询:
例如:
Id = 1, parent_id = 11, type = 1
Id = 2, parent_id = 1, type = 2
Id = 3, parent_id = 4, type = 2
Id = 4, parent_id = 7, type = 1
Id = 5, parent_id = 8, type = 2
Id = 6, parent_id = 9, type = 1
Id = 7, parent_id = 0, type = 3
Id = 8, parent_id = 0, type = 3
Id = 9, parent_id = 0, type = 3
所以根据这些数据,只有id 6会有一个包含1的变量,所有其他的都是0,因为它们不符合标准
换句话说,我想验证每个当前数据是否与任何其他数据的parent_id不匹配。
换句话说,我希望没有id
= parent_id
并且type
= 1。
如何使用上述方法执行if条件?我希望它特别在if条件下,因为if将选择更大的查询。
像
这样的东西if(id在parent_id中(在{的所有
parent_id
个字段中) 数据库),1,0)AS条件
我希望我的问题很明确!如果你有任何问题可以随意提问。
答案 0 :(得分:0)
您的变量可以单独选择:
select t1.id pId, t1.type pType, (
select if(count(t2.id)=0 and pType=1, 1, 0 )
from tbl_name t2 where t2.parent_id=pId) cond
from tbl_name t1;
确保将id
,parent_id
编入索引,否则您将面临严重的性能损失。