当前位置: 首页 > 知识库问答 >
问题:

从表名在数组中的多个表中删除

郭修平
2023-03-14

**瓷砖可能不正确**

在不手工列出表名的情况下,我是否可以使用一个函数获取表名,然后在delete语句中使用该函数?即

DELETE FROM IN (
  SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE';
) AS T
WHERE
  T.ColumnName = 'value';

有没有一个好的,明确的方法来做这件事?我不会把桌子丢在这里的。

共有1个答案

蔺弘
2023-03-14

除了Ross Smith的答案之外,我还增加了一个表名look Up。

delimiter //

drop procedure if exists hunt //
create procedure hunt()
begin
    DECLARE done BOOL default false;
    DECLARE tablename CHAR(255);
    
    -- This was the only bit I've added
    DECLARE cur1 cursor for (
        SELECT TABLE_NAME
            FROM information_schema.COLUMNS 
                WHERE 
                    TABLE_SCHEMA = 'schema' 
                AND COLUMN_NAME = 'column_name'
    );
    -- End what I've added

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    open cur1;

    myloop: loop
        fetch cur1 into tablename;
        if done then
            leave myloop;
        end if;
        -- Then my delete query
        set @sql = CONCAT('DELETE FROM ', tablename, ' WHERE 'column_name' = 'value'');
        prepare stmt from @sql;
        execute stmt;
        drop prepare stmt;
    end loop;

    close cur1;
end //

delimiter ;

call hunt();

 类似资料:
  • 目前,我创建了单独的,最后连接这些,以创建一个。 是否有优雅的或一个衬里来从数组列表和多个数组中创建df。

  • 问题内容: 我正在尝试使用SQL从连接在一起的多个表中删除多行。 表A连接到表B表B连接到表C 我想删除表B和C中与表A中的一行相对应的所有行 问题答案: 好吧,如果您使用过InnoDB表,则可以使用外键设置级联删除,这将自动完成所有操作。但是,如果您出于某种原因使用MyISAM,则只需使用多表DELETE即可:

  • 问题内容: 这是我想做的事情: 从表中删除一个项目,并在表中删除与该项目关联的所有图像。 可以说 此查询有什么问题? 问题答案:

  • 我有一个arraylist的arraylist,每个arraylist都有相同的点,例如,当您打印时,这是输出 在打印之前,我要删除其x值不等于数组列表索引的所有点 所以输出应该是 我尝试使用remove方法和for循环以及其他方法,但都不起作用。 有人能帮忙吗?

  • 问题内容: 考虑2个或更多表: 我希望删除所有与名字“ Sam ”匹配的 用户 及其 订单 。在mysql中,我通常会做左连接。在此示例中,我们不知道userid。 查询的正确格式是什么? 问题答案: http://www.postgresql.org/docs/current/static/sql- delete.html 您也可以使用 http://www.postgresql.org/doc

  • 问题内容: 这是正确的方法吗? 问题答案: 对,那是正确的。在这里工作正常: 如果对您不起作用,则可以修改此示例以显示您遇到的问题。