从任何表中选择任何字段

时间:2012-10-23 17:32:31

标签: mysql mysqli

是否可以使用mysql语句从任何表中选择任何字段? 例如 : SELECT * FROM * WHERE ? IN (SELECT * FROM *)实现通用搜索方法,该方法不依赖于特定的表或字段。我刚刚读到我们可以使用SQL命令列出数据库的所有表:SHOW TABLES 你对我们怎么做这个有什么想法吗? 谢谢:))

2 个答案:

答案 0 :(得分:0)

创建一个过程并使用动态查询机制,例如下面:

 CREATE PROCEDURE dynamicQuery()
  BEGIN
  SET @tableName := 'TABLENAME1';
  SET @SqlStr = 'SELECT  * FROM @tableName';
  PREPARE n_StrSQL FROM @SqlStr;
  EXECUTE n_StrSQL;
  DEALLOCATE PREPARE n_StrSQL;
 END

答案 1 :(得分:0)

你可以在php中尝试这样的东西

$getTables = mysql_query("show tables");
$tmpString = '';
while ($table_data = mysql_fetch_row($getTables))
{
    $tmpString.=$table_data[0].',';
}   
$ALL_DATABASE_TABLES = substr($string,0,strlen($tmpString)-1); //Remove the last ,

然后你得到了所有的表,你可以构建你的查询

像这样

$qry = "SELECT * FROM $ALL_DATABASE_TABLES"