【问题标题】:Medoo | Delete with Inner Join梅杜 |使用内连接删除
【发布时间】:2019-05-24 07:57:09
【问题描述】:

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

是否有任何解决方法可以使用$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-&gt;select 中所做的那样,但不幸的是它不起作用。

目前我可以使用$db-&gt;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)
');

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

提前感谢您的建议

【问题讨论】:

    标签: php mysql medoo


    【解决方案1】:

    可以在查询中执行此操作,但像这样使用串联并不是最好的方法。尝试像这样使用参数化:

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

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

    【讨论】:

      猜你喜欢
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 2019-08-02
      相关资源
      最近更新 更多