在where where子句MYSQL中使用子查询

时间:2013-12-09 17:42:01

标签: mysql join subquery

大家好我有以下问题:

update tblAnimal as p 
join tblGrouping as tfs on tfs.tblGroupingId = p.tblGroupingId
join tblShelter as ses on ses.tblShelterId = tfs.tblShelterId
join tblFind as tf on ses.tblFindId = tf.tblFindId
set findColor = 'y'
where p.animalData like (select searchName from tblSearchCriteria where animalId =       p.tblanimalId) 
or    p.history like (select searchName from tblSearchCriteria where animalId =    p.tblanimalId);

所以我想这个查询只返回子查询中的一列是可以的,但是一旦你从该返回查询开始获得多个值,我们就会开始遇到麻烦。

我的问题是,当期望从子查询返回多个列时,实现上述目标的最佳方法是什么。基本上我想要做的是处理搜索条件表中的多个searchNames,并将findcolor更新为' y'对于任何匹配任何返回的搜索名称的人。

我希望这是可以理解的。

1 个答案:

答案 0 :(得分:0)

UPDATE
  tblAnimal as p
  JOIN tblSearchCriteria sc
       ON p.tblanimalId = sc.animalId AND (p.animalData LIKE sc.searchName
                                           OR p.history LIKE sc.searchName)
  JOIN tblGrouping as tfs on tfs.tblGroupingId = p.tblGroupingId
  JOIN tblShelter as ses on ses.tblShelterId = tfs.tblShelterId
  JOIN tblFind as tf on ses.tblFindId = tf.tblFindId
SET
  findColor = 'y'

否则你可以用IN替换LIKE。