0

mysql.i に 2 つのテーブルがあります。最初のテーブルのフィールドを確認したいです。フィールドが空でない場合は、同じテーブルを検索し、そうでない場合は他のテーブルを検索します。例えば

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 ;

最初のテーブルで、名前が空/nullではないかどうかを確認したい

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

それ以外の場合は、次のように 2 番目のテーブルにチェックインします

 WHERE test.myname='abc'

関係は、最初のテーブルの ID である 2 番目のテーブルの list_id です

4

1 に答える 1

0

ここに 1 つのアプローチがあります。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 に答える