首页 > 解决方案 > 如何比较 2 个表并保存到另一个表中

问题描述

这是我的导入表:

在此处输入图像描述

这是我的收藏表: 在此处输入图像描述

我的问题是,我输入“日期”作为输入,应该比较两个表具有相同类型的数据。它发送的消息与表中的数据相同,否则如果不相同,则应将其保存到“集合”表中。

我的代码是:

$query = $this->db->query("SELECT * FROM `collection` Left outer JOIN import on import.cdate != collection.collection_date WHERE collection_date="2019-07-11"")->result_array();

标签: mysqlcodeigniter

解决方案


你可以试试这个查询:

SELECT 
  a.dt,
  (
    CASE
      WHEN c.cdate IS NULL 
      THEN 'save this' 
      ELSE 'the data is same' 
    END
  ) AS reslt 
FROM
  (SELECT 
    '2019-08-07' dt) a 
  LEFT JOIN `collection` b 
    ON a.dt = b.collection_date 
  LEFT JOIN `import` AS c 
    ON b.collection_date = c.cdate 
    AND b.pcode = c.code
    AND b.pname = c.name
    AND b.rcode = c.rcode1
    AND b.rmaster = c.rmaster1
    AND b.collection_amt = c.camt
    AND b.loan_no = c.lno
    AND b.receive_amt = c.ramt
    AND b.loan_amt = c.lamt
    AND b.route_no = c.rno;

“SELECT '2019-08-07' dt”中,您需要将输入传递给它,在这里我匹配所有行以获得完美匹配。如果您只需要日期匹配,您可以避免所有其他行匹配条件,并且您可以只保留“ b.collection_date = c.cdate ”。

重要提示:索引列使查询更快。


推荐阅读