我已经搜索了一段时间来选择SQL中的某些列(字段)。
我想做的是。。。假设我有一个包含200列数据的表。我想选择一整行,但只选择最后197列的数据。省略前3列中包含日期和ID的内容。
键入我想要数据的197个字段名将非常耗时。必须有一些更简单的方法。
有什么帮助或建议可以为我指明正确的方向吗?
如果您正在使用MySQL,请尝试以下操作:
<?php
$query = "
SHOW COLUMNS FROM `Table`
WHERE `Field` NOT LIKE 'rowtoignore1'
AND `Field` NOT LIKE 'rowtoignore2'
AND `Field` NOT LIKE 'rowtoignore3'
";
$r = mysql_query($query) or die(mysql_error());
$queryfields = "";
while($f = mysql_fetch_assoc($r)) {
$queryfields .= "`{$f['Field']}`,";
}
$queryfields = substr($queryfields,0,strlen($queryfields)-1);
$query = "SELECT {$queryfields} FROM `Table` WHERE xyz";
?>
如果您使用MySQL,您可以查询模式以通过索引获得列名,因此您可以使用迭代PHP例程来构建查询,但在运行您真正想要的语句之前,需要197条select语句。杂乱无章,效率低下。
做一个SELECT *
然后忽略前三列似乎更简单。如果你使用mysql_fetch_assoc()
,你可以很容易地得到你想要的列。看看:
- http://php.net/manual/en/function.mysql-fetch-array.php
如果我在做这个任务,我不会排除前3列。如果这3列包含很长的text/bob,那么您可以避免,否则最好获取这200列。
使用此函数mysql_list_fields()获取与表相对应的字段,并自定义选择查询以包含所需字段