在mysql中用IF搜索两个表

时间:2013-04-21 17:36:38

标签: mysql select

我在mysql中有两个表。我想检查第一个表中的字段。如果字段不为空,则在同一个表中搜索,否则在其他表中搜索。 例如

CREATE TABLE IF NOT EXISTS `crm_list` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(22) NOT NULL,
`status` int(22) NOT NULL DEFAULT '1',
`dateupdated` date NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;

 CREATE TABLE IF NOT EXISTS `test` (
   `id` int(22) NOT NULL AUTO_INCREMENT,
  `rec` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `myname` varchar(22) NOT NULL,
   `list_id` int(22) NOT NULL
  PRIMARY KEY (`id`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

在第一个表中,我想检查名称是否为空/空

WHERE crm_list.status=1 AND crm_list.dateupdated=2012-04-13

否则请查看第二张表

 WHERE test.myname='abc'

关系是第二个表中的list_id,它是第一个表的id

1 个答案:

答案 0 :(得分:0)

这是一种方法。条件只在where子句中表示:

select cl.*
from crm_list cl
where (cl.status=1 AND cl.dateupdated=2012-04-13 and coalesce(cl.name, '') <> '') or
      (coalesce(cl.name, '') = '' and
       cl.list_id in (select list_id from test where myname - 'abc'
      )