2014-11-05 141 views
0

考虑到下面的MySQL语句:嵌套SQL语句和选择(MySQL的)

SELECT table_name,column_name 
FROM information_schema.columns 
WHERE table_schema = 'myschema' 
AND column_name REGEXP 'ID$' 
ORDER BY table_name,ordinal_position 

我想从结果中选择包含某个编号的所有列。

因为我不知道我应该适用我的第二选择列或表的准确名称,我需要我的选择适用于某种“占位符”的,我想。

例如,如果第一请求的结果集是:

('wp_links', 'link_id') 
('wp_options', 'option_id') 
('wp_postmeta', 'meta_id') 
('wp_postmeta', 'post_id') 

然后选择应该包括所有表名是在结果的第一列和应该采取的结果的第二列的列名作为参数来测试它是否包含某个ID#。

换句话说,我想找到一个特定的数据库名为* _ID所有列,并含有一定的编号,并知道其对应的表名的列所属。

+0

你可以用样本数据和期望的结果编辑问题吗? – 2014-11-05 12:06:38

回答

0

你不能做你的SQL想什么,但你可以使用SQL程序做到这一点,无论是在程序或匿名块。

创建它通过你的说法的上述结果循环光标。在遍历结果时,构造要在每个表上执行的字符串,以查看是否存在所需的id并执行查询。

SET sql_statament = CONCAT("SELECT * FROM ", v_table_name," WHERE ", v_column_name," = ", v_id_number); 

本教程应该帮助:http://www.mysqltutorial.org/mysql-cursor/

0

你想要做两件不同的事情:

  1. 获取信息的数据库(表和列,您将通过执行类似创建这个字符串名)。
  2. 从数据库中获取数据(来自列的值)。

不能同时两者都做。您可以使用一些编程语言首先触发一个SQL查询来获取表名和列,然后构建一个查询或多个查询来获取数据。