首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Medoo |使用内部连接删除

Medoo |使用内部连接删除
EN

Stack Overflow用户
提问于 2019-05-24 15:57:10
回答 1查看 65关注 0票数 0

嗨,我现在开始使用Medoo,当我检查documentation时,我找不到一种使用inner join语句删除记录的方法。

是否有使用$db->delete()方法通过内连接删除记录的变通方法?

原始SQL查询:

代码语言:javascript
复制
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(),但这对我来说不是一个最佳的解决方案。

代码语言:javascript
复制
$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)
');

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

提前感谢您的建议

EN

回答 1

Stack Overflow用户

发布于 2019-07-26 12:58:01

您可以在query中执行此操作,但使用类似于连接的方式并不是最好的方法。尝试像这样使用参数化:

代码语言:javascript
复制
$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语句中选择该视图,而不会出现问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56288186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档