是否有更简洁的查询方式基于另一个查询的结果?

时间:2013-05-03 18:56:17

标签: php mysql

下面我有一个工作实现查询所选表,$ table,并返回按表格第一列降序排序的$ numRows行:

$cQuery = "SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '$table' LIMIT 1";

$mysqli = new mysqli( DB_LOCATION , DB_USERNAME , DB_PASSWORD );
 if ( $mysqli -> connect_errno )
     err("Could not connect to DB. " . $mysqli->connect_error);

$result = $mysqli -> query( $cQuery ) -> fetch_array();     
$query = "SELECT * FROM $table ORDER BY $result[0] DESC LIMIT $numRows";

$result = $mysqli -> query( $query );

我想知道是否有人知道这样做的方法只是一个mysqli声明?必须有两个表查询;一列用于列ID,第二列用于特定查询,但它是否需要像我一样明显?

欢迎任何批评。

2 个答案:

答案 0 :(得分:2)

好像您正试图从数据库模式中获取表的第一列名称,以便您可以在ORDER BY子句中使用它。你不真的必须在order by子句中指定列名,你可以指定序数位置:

SELECT * FROM $table ORDER BY 1 DESC ...

答案 1 :(得分:0)

所以,只需使用子查询:

$query = "SELECT * FROM INFORMATION_SCHEMA.$table ORDER BY (
    SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = '$table' LIMIT 1) DESC
  LIMIT $numRows";

$result = $mysqli->query($query);