在MYSQL中使用AND语句

时间:2015-03-16 13:32:09

标签: php mysql case

好的,这个查询的目的是检查表2中是否存在记录,如果它确实更新了要复制的类型,如果没有,则将其更新为original。我必须检查三个字段,并且所有字段都必须为真,才有资格作为重复条目。

此时,它会检查正确的表,查找是否存在重复,并在我测试的所有9条记录上将状态从1更改为2,但是,它只将第一条记录更改为“重复”即使它们都是重复的。

我可以在案例陈述中使用'AND'吗?如果没有,有没有人建议我如何改变这个查询工作?我尝试过使用SELECT子查询,但这不起作用。

以下是代码:

$query = "UPDATE first_table f
    LEFT
    JOIN second_table s
      ON f.co_id = s.co_id
     SET f.status = 2, f.type = 
        CASE 
            WHEN s.ltt = f.ltt
            AND s.lang = f.lang 
            AND s.units = f.units
        THEN 'duplicate' ELSE 'original' 
        END
   WHERE f.co_id = :coid AND f.type = :rtype AND f.status = :status";
    $params = array();
    $params[] = array(':coid', $co_id, 'int');
    $params[] = array(':rtype', 'uploads', 'str');
    $params[] = array(':status', '1', 'int');
    $db->query($query, $params);

2 个答案:

答案 0 :(得分:0)

我设法使用Ali Arshad和sqlfiddle的一些建议......并提出了解决方案!

 $query = "UPDATE first_table f
LEFT
JOIN second_table s
  ON f.co_id = s.co_id
 SET f.status = 2, f.type = 
    CASE 
        WHEN (SELECT f.prop_id FROM first_table f 
                WHERE s.ltt = f.ltt AND s.lang = f.lang 
                AND s.units = f.units)
    THEN 'duplicate' ELSE 'original' 
    END
WHERE f.co_id = :coid AND f.type = :rtype AND f.status = :status";
$params = array();
$params[] = array(':coid', $co_id, 'int');
$params[] = array(':rtype', 'uploads', 'str');
$params[] = array(':status', '1', 'int');
$db->query($query, $params);

答案 1 :(得分:0)

也许你看起来像是以下链接,

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

此命令会自动使用您定义的定义进行插入和更新。