0

嗨,目前我开始使用 Medoo,当我检查文档时,我找不到使用内部连接语句删除记录的方法。

是否有任何解决方法可以使用$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)
');

我想知道是否有比这更好的方法。

提前感谢您的建议

4

1 回答 1

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"
    ]
);

我不知道如何使用删除进行连接(我怀疑是否可能)但是,如果您在数据库本身中创建所需的视图,那么您可以在删除语句中选择视图而不会出现问题。

于 2019-07-26T04:58:00.857 回答