是否有一种方法,我可以检查一个值是否存在于另一个表中,并运行不同的语句,如果它是我因子NOT EXISTS到我的sql语句?
的例子:
如果products_images
表中没有prod_id
,则运行Code One
,否则运行Code Two
:
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
但是,您需要执行两个SQL查询,其中第一个查询是强制执行的。你可以使用php执行第一个查询,如果它返回0行,你可以执行代码1,否则代码2使用php的if-else
语句。
$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 )
如果你关心效率,你可以使用预处理语句来执行MySQL查询。
如果这必须完全包含在数据库中,我会考虑将其实现为存储过程。
像这样:
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//
请记住,这可能是不完美的,我还没有测试过。只是一个例子。