0

我在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

4

1 回答 1

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'
      )
于 2013-04-21T18:55:05.183 回答