有没有办法可以检查另一个表中是否存在值并运行不同的语句,如果是,我将 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
答案 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查询。