比较SQL语句if else样式

时间:2013-06-11 03:21:34

标签: php mysql sql

有没有办法可以检查另一个表中是否存在值并运行不同的语句,如果是,我将 NOT EXISTS 分解为我的sql语句?

示例:

如果在prod_id表中找不到products_images,则运行Code One,否则运行Code Two

代码1:

DELETE FROM $table WHERE $table.id ='$product_id

代码2:

SELECT prod.id, img.product_id FROM `default_ps_products` prod INNER JOIN `default_ps_product_images` img ON prod.id = img.product_id where prod.id = 92

2 个答案:

答案 0 :(得分:0)

如果这必须完全包含在数据库中,我会将其作为存储过程实现。

这样的事情:

DELIMITER //  

CREATE PROCEDURE `myProc` (IN prodIdVar INT)  
    LANGUAGE SQL  
    DETERMINISTIC  
    SQL SECURITY DEFINER  
BEGIN  
    DECLARE prodCount INT
    SELECT count(*) INTO prodCount FROM products_images WHERE product_id=prodIdVar;
    IF prodCount = 0 THEN
        DELETE QUERY GOES HERE;
    ELSE
        SELECT QUERY GOES HERE;
    END IF;
END//  

请记住,这可能并不完美我还没有测试过。只是一个例子。

答案 1 :(得分:0)

但是,您需要执行两个SQL查询,其中第一个是必需的。您可以使用php执行第一个查询,如果它返回零行,您可以执行代码1,否则使用php if-else语句执行代码2。

$result = mysql->query("SELECT product_id FROM table WHERE product_id = $prod_id");

if(mysqli_num_rows($result) !== 0)
    mysqli->query( CODE 1 )
else
    mysqli->query( CODE 2 )

如果您关心效率,可以使用prepared statements来执行MySQL查询。