嗨,我现在开始使用Medoo,当我检查documentation时,我找不到一种使用inner 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)
');我想知道是否有比这更好的方法。
提前感谢您的建议
发布于 2019-07-26 12:58:01
您可以在query中执行此操作,但使用类似于连接的方式并不是最好的方法。尝试像这样使用参数化:
$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进行连接(我怀疑这是可能的),但是,如果您在数据库本身中创建了所需的视图,那么您可以在delete语句中选择该视图,而不会出现问题。
https://stackoverflow.com/questions/56288186
复制相似问题