文档章节

根据值获得值相同的字段名和所在的表(mysql)

SevensChan
 SevensChan
发布于 2017/02/28 18:09
字数 286
阅读 14
收藏 0

这个问题来源于一个奇怪的需求。。太长了懒得解释了。。反正就是希望根据值找到这个值相同的字段名和所在表

用程序写可以 我不用了
直接sql写应该不行吧 
就用存储过程了

begin
declare loopIndex int;
declare sqlstr varchar(50);
declare tableLoop int;
declare tableAmount int;
set loopIndex = 0;
set tableLoop = 0;

SELECT count(TABLE_NAME) INTO tableAmount
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'DB_NAME';

WHILE tableLoop < tableAmount DO
    SELECT TABLE_NAME INTO @currentTable
    FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_SCHEMA = 'shopnc' LIMIT tableLoop,1;
	SET tableLoop = tableLoop + 1;

    SET @getColumnAmountSql = CONCAT("SELECT count(column_name) INTO @columnAmount from information_schema.columns where table_schema = 'DB_NAME' AND table_name = '",@currentTable,"'");

	PREPARE STMT1 FROM @getColumnAmountSql;
    EXECUTE STMT1;
	
	SET loopIndex = 0;
    WHILE loopIndex < @columnAmount DO
        SET @getCurrentColumnSql = CONCAT("SELECT column_name INTO @tempColumn from information_schema.columns where table_schema = 'shopnc' AND table_name = '",@currentTable,"' LIMIT ",loopIndex,",1");

		PREPARE STMT2 FROM @getCurrentColumnSql;
	    EXECUTE STMT2;
        SET loopIndex = loopIndex+1;

        SET @getEquelValueColumnSql = CONCAT("select count(",@tempColumn,") INTO @tempValue from ",@currentTable," where ",@tempColumn," = ",memberid);

        PREPARE STMT3 FROM @getEquelValueColumnSql;
        EXECUTE STMT3;
        
        IF @tempValue > 0 THEN
            select @currentTable,@tempColumn;
        END IF;
    END WHILE;
    
END WHILE;
end

直接用的时候改掉DB_NAME就好了 还有要建立一个存储过程先 一句命令的事不会不懂吧

赶着下班了 先写到这里了 明天记得再细改了 拜拜

© 著作权归作者所有

SevensChan

SevensChan

粉丝 25
博文 59
码字总数 32119
作品 0
澳门
高级程序员
私信 提问
Mysql建表与索引使用规范详解

一、Mysql建表、索引 MySQL建表,字段需设置为非空,需设置字段默认值。 MySQL建表,字段需NULL时,需设置字段默认值,默认值不为NULL。 MySQL建表,如果字段等价于外键,应在该字段加索引。...

boonya
07/10
21
0
MySQL基础应用

1.登入到MySQL服务器 [root@localhost ~]# mysql -u root -p Enter password: //根据提示输入正确的密码 2.执行MySQL操作语句 以root登入打“mysql>”环境后,执行"show master logs;"语句可......

qualityserver
2017/06/11
0
0
PHP与MySQL连接及SQL语言基本语法

学习PHP之SQL语法 数据库中的常用SQL语句 创建一个简单的数据库 创建一个数据库命令:CREATE TABLE 删除一个数据库命令:DROP TABLE 修改一个字段名称:RENAME TABLE `原字段` TO `新字段` 删...

长平狐
2012/10/08
112
0
三、数据表的基本操作

3.1、创建数据表 创建数据表指的是在已经创建好的数据库中建立新表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(实体完整性、引用完整性、域完整性)约束的过程。 创...

运维菜鸟丶
2017/07/30
0
0
MySql的基础知识之select

MySql的基础知识之select 一、select语法 1、 简单查询语句 select 字段 from 表名|视图 where 条件 order by 字段 desc|asc (|表示或,desc降序,asc升序,不写默认升序) 例如 : 2、 查询不...

幸运券发放
2018/05/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周四乱弹 —— 当你简历注水但还是找到了工作

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @花间小酌 :#今日歌曲推荐# 分享成龙的单曲《男儿当自强》。 《男儿当自强》- 成龙 手机党少年们想听歌,请使劲儿戳(这里) @hxg2016 :刚在...

小小编辑
今天
2.7K
22
靠写代码赚钱的一些门路

作者 @mezod 译者 @josephchang10 如今,通过自己的代码去赚钱变得越来越简单,不过对很多人来说依然还是很难,因为他们不知道有哪些门路。 今天给大家分享一个精彩的 GitHub 库,这个库整理...

高级农民工
昨天
4
0
用好项目管理工具,人人都可以成为项目经理

现在市面上的项目管理工具越来越多了,但是大多数都是一些协同工具或轻量项目管理工具。如果是多团队、跨部门使用或者企业级的项目管理,从管理思想到工具运用,需要适应企业的业务流程体系,...

cs平台
昨天
12
0
只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下:...

晓月寒丶
昨天
69
0
区块链应用到供应链上的好处和实际案例

区块链可以解决供应链中的很多问题,例如记录以及追踪产品。那么使用区块链应用到各产品供应链上到底有什么好处?猎头悬赏平台解优人才网小编给大家做个简单的分享: 使用区块链的最突出的优...

猎头悬赏平台
昨天
32
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部