繁体   English   中英

MySQL在插入时检查表中的最后一个条目

[英]Mysql check for last entry in table while inserting

我有一个表,该表具有2列Action_key (用于存储loggedinoptin值)和Value (用于存储0或1)

我的表具有Id列自动递增。

更新

以下是通过检查条件即时插入的方式。

现在,我需要条件来检查新插入的行是否具有与最后一条记录的UidAction_keyValue ,否则应该插入。

 $uniquedataoptininArray = array(   //except CreatedDate
        'Uid'=> $uid,
        'Action_key'=> $actionkey,
        'Value'=>$login_optin_value
        );
$userexists=  $this->getUserOptInLogTable()->getOptinLogindetails($uniquedataoptininArray);

if($userexists){

         echo 'record exist';

     }else{
          echo 'To be inserted';
          $result =  $this->getUserOptInLogTable()->insertdetails($dataArray);

下面的查询给了我最后插入的行-很好。 但需要知道如何使用以下查询的rhe检查条件

$qry ="SELECT * FROM UserOptInLog WHERE Uid = ". $uid ." ORDER BY Id DESC LIMIT 1;";

当前的问题。

插入条件

1)如果我的下表中填充了如图所示的值,现在我试图插入Uid 1608 ,已ActionKey loggedinValue 1 ,但未插入。

2)或者,如果我使用值Uid 1608Action_key optinvalue 1 -它没有插入(理想情况下应该插入)

不应插入的条件

1)使用表现有数据-如果我插入Uid 1608 ,已ActionKey loggedinvalue 0与最后一行基本上在同一行-则不应插入

在此处输入图片说明

如果您已经从$this->tableGateway->getLastInsertValue()获得了最后一个ID ,并且Action_keyvalue分别"logged_in"0 ,则无需担心您的查询...

  1. 只需检查以下三个项目(列)是否匹配的记录:

     SELECT * FROM `table` WHERE `id` = <last_id> # one you get from $this->tableGateway->getLastInsertValue() AND `Action_key` = 'loged_in' AND `value` = 0 
  2. 检查从以上查询返回的记录数:

    • 如果返回null,则INSERT新记录
    • 否则,请忽略

UPDATE

  1. 只需检查以下三个项目(列)匹配的Uid

     SELECT Uid FROM `table` # get just Uid column WHERE `id` = <last_id> # one you get from $this->tableGateway->getLastInsertValue() AND `Action_key` = 'loged_in' AND `value` = 0 
  2. 匹配从以上查询返回的Uid:

    • 如果它与新的Uid 匹配(将要插入的记录),请INSERT新记录
    • 否则,请忽略

您可以检查Uid的最后一个值:

SELECT Action_key, value FROM table
WHERE Uid = uid 
ORDER BY id DESC LIMIT 1;

这将返回目标Uid的最后一项。 然后,您可以匹配Action_keyvalue列以匹配记录...

您可以在子查询中使用这样的语句

insert into tab
select q.* 
  from  
  (
  select *
    from tab
   where date_ = ( select max(date_) from tab where Action_key = 'loggedin' )
     and Value = 0
  ) q   
where date_ is not null;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM