检查字段的值是否在另一个字段中

时间:2018-04-16 15:40:17

标签: mysql sql

我有一个包含这些值的表:

id
parent_id
type

如果满足以下条件,我想编写一个将在变量中创建并存储为1的查询:

  • 每个结果的id不应该是另一个结果的parent_id(parent_id 0不计算)
  • 结果应仅为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条件

我希望我的问题很明确!如果你有任何问题可以随意提问。

1 个答案:

答案 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;

确保将idparent_id编入索引,否则您将面临严重的性能损失。