我在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
答案 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'
)