gpt4 book ai didi

mysql - 如何从具有可变数据库和表的数据中进行选择

转载 作者:行者123 更新时间:2023-11-29 00:24:20 24 4
gpt4 key购买 nike

有没有办法从一个可变表名数据库名和值中选择?

我正在尝试通过以下方式检查列值是否存在。我强制这样做是因为表名和列名和值是可变的...

这在存储过程文件中使用。

我想要这样的东西:

SELECT 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA= 'database1'
AND TABLE_NAME= 'table1'
AND COLUMN_NAME = 'clmn_id_fk'
AND 'database1.table1.clmn_id_fk'=2218

我找不到结果。

最佳答案

您可以从存储过程中获取灵感,如下所示。更改所有必要的内容以实现您想要的解决方案,包括所有相关限制和验证非常重要。

/* CODE FOR DEMONSTRATION PURPOSES */

DELIMITER $$

DROP PROCEDURE IF EXISTS `sp_check`$$

CREATE PROCEDURE `sp_check`(`p_table_schema` VARCHAR(64), `p_table_name` VARCHAR(64), `p_column_name` VARCHAR(64), `p_value` INT)
BEGIN
IF EXISTS (SELECT NULL
FROM `information_schema`.`columns`
WHERE `table_schema` = `p_table_schema` AND
`table_name` = `p_table_name` AND
`column_name` = `p_column_name`) THEN
SET @qry := CONCAT('SELECT IF(COUNT(`', `p_column_name`, '`), 1, 0) AS `EXISTS` FROM `', `p_table_schema`, '`.`', `p_table_name`, '` WHERE `', `p_column_name`, '` = ', `p_value`);
PREPARE stmt FROM @qry;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
ELSE
SELECT 0 AS `EXISTS`;
END IF;

END$$

DELIMITER ;

CALL `sp_check`('database1', 'table1', 'clmn_id_fk', 2218);

关于mysql - 如何从具有可变数据库和表的数据中进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19675343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com