用程序或者存储过程,去访问 INFORMATION_SCHEMA.COLUMNS 表得到所有的列名,表名。然后通过程序语句生成 select * from xxx where col1 like ... or col2 like ...的SQL语句分别执行以判断是否有结果返回。具体语句可以先参考MYSQL官方免费手册中的例子自己先写一下。
我只会“SELECT 列名称 FROM 表名称 WHERE 列 运算符 值”但是我想有更方便的方法,教程下载了。请问你说的程序语句的关键词是什么,我先看看我能看懂不
不太明白,下面写了2种。 1、-- 从系统表,拿表名、字段名。 select TABLE_NAME from information_schema.TABLES where TABLE_NAME='TB_Member' and TABLE_SCHEMA='member'2、直接在查询语句中写死。 select *,'TB_Test' as TableName from test.TB_Test where 1=1;
第二句“select * ,'TB_Test' as TableName from test.TB_Test where 1=1;”报错 “[SQL] select * ,'TB_Test' as TableName from test.TB_Test where 1=1; [Err] 1146 - Table 'test.tb_test' doesn't exist”,所以我看了下第一句,我想是不是说在information_schema.TABLES表中搜索TABLE_NAME列的值如果TABLE_NAME='TB_Member'与TABLE_SCHEMA='member'为真就返回? 我SQL是在太差了,不过我想说的是搜索有这个数值的表,而不是在一个数据库中搜索一个表名。可能我说的不太清除。
我只会“SELECT 列名称 FROM 表名称 WHERE 列 运算符 值”但是我想有更方便的方法,教程下载了。请问你说的程序语句的关键词是什么,我先看看我能看懂不
1、-- 从系统表,拿表名、字段名。
select TABLE_NAME from information_schema.TABLES where TABLE_NAME='TB_Member' and TABLE_SCHEMA='member'2、直接在查询语句中写死。
select *,'TB_Test' as TableName from test.TB_Test where 1=1;
第二句“select * ,'TB_Test' as TableName from test.TB_Test where 1=1;”报错
“[SQL] select * ,'TB_Test' as TableName from test.TB_Test where 1=1;
[Err] 1146 - Table 'test.tb_test' doesn't exist”,所以我看了下第一句,我想是不是说在information_schema.TABLES表中搜索TABLE_NAME列的值如果TABLE_NAME='TB_Member'与TABLE_SCHEMA='member'为真就返回?
我SQL是在太差了,不过我想说的是搜索有这个数值的表,而不是在一个数据库中搜索一个表名。可能我说的不太清除。
其次,你说第二个会报错,test数据库、TB_Test表你都没有你能运行?最后:
其实你自己需求都不太清楚,我就说怎么会有你所说的这种要求。。
而且你最后所说的“搜索有这个数值的表,而不是在一个数据库中搜索一个表名”
这并不是SQL差不差的问题,我想说的是,你对需求还没说清楚!可能是我理解能力有问题了!
1、获取mysql中的系统表【TABLES】,某个数据库中的所有表名,根据该表名关联查询系统表中的【COLUMNS】,拿到所有表中的字段
2、然后循环查询该表中,该字段的值是否等于你所要查的值。
3、如果相等记录该表名及字段名,可以把该记录存放在临时表中。
4、循环结束、查询该临时表,就是你所想要的结果。
5、删除临时表。
谢谢,不过我对sql语言不熟悉,能否给出例句?或者一步一步怎么写的步奏。不胜感谢
打开游标(系统TABLES、COLUMNS)->字符串累加生成SQL语句的方法,判断COLUMNS中有无满足条件的记录
自己动手做一下吧,有问题再问
别生气,来论坛上是为了交流而不是为了生气的。我是一点也不会mysql所以悉心请教,我想到了你说的这个问题,所以我的问题就是一个最大的,不会在发生变化的问题。我也不会在问这个问题的衍生问题。我只要是做项目的,但是眼下项目的确遇到了这个难点。