您好,目前我开始使用Medoo,当我检查documentation时,找不到用内部join语句删除记录的方法。
是否有解决方法,可以使用$db->delete()
方法删除具有内部联接的记录?
原始SQL查询:
DELETE t1 FROM customers t1 INNER JOIN customers t2 WHERE t1.id < t2.id AND (t1.customer_name = t2.customer_name AND t1.customer_unique_code = t2.customer_unique_code)
到目前为止,我尝试的是使用内部查询,就像在$db->select
中所做的那样,但不幸的是,它没有用。
目前我可以与$db->query()
一起使用,但这对我来说不是最佳解决方案。
$db->query(
'DELETE
t1 FROM '.$customers_db.' t1 INNER JOIN '.$customers_db.' t2 WHERE t1.id < t2.id AND(
t1.customer_name = t2.customer_name AND t1.customer_unique_code = t2.customer_unique_code)
');
我想知道是否有比这更好的方法。
预先感谢您的建议
答案 0 :(得分:0)
您可以 在查询中执行此操作,但这样做并不是最好的方法。尝试像这样使用参数化:
$db->query(
'DELETE t1
FROM :custdb t1
INNER JOIN :custdb t2
WHERE t1.id < t2.id
AND (
t1.customer_name = t2.customer_name AND t1.customer_unique_code = t2.customer_unique_code
)',
[
":custdb" => "customer_DB_name"
]
);
我不知道如何进行删除联接(我怀疑是否有可能),但是,如果您在数据库本身中创建所需的视图,则可以在delete语句中选择该视图而不会出现问题。