选择具有相同字段名的MYSQL行并添加前缀
我试图通过mysql查询选择几个表并左键连接它们,但是它们都有相同的列名称“user”等。我想用这种方式重命名所有字段。因此,我尝试了以下查询选择具有相同字段名的MYSQL行并添加前缀,mysql,Mysql,我试图通过mysql查询选择几个表并左键连接它们,但是它们都有相同的列名称“user”等。我想用这种方式重命名所有字段。因此,我尝试了以下查询 SELECT mod_backup_accounts . * AS account . * , mod_backup_subscriptions . * FROM `mod_backup_accounts` LEFT JOIN `mod_backup_subscriptions` ON `mod_backup_accounts`.subscription
SELECT mod_backup_accounts . * AS account . * , mod_backup_subscriptions . *
FROM `mod_backup_accounts`
LEFT JOIN `mod_backup_subscriptions` ON `mod_backup_accounts`.subscription_id = `mod_backup_subscriptions`.package_id
但是,
mod_backup_账户。*作为帐户*代码>使它失败,有没有办法做到这一点?因此,它将名称作为帐户。您不能为别名列提供速记,必须为每个列名称显式提供速记。总之,通常建议在SELECT
列表中显式地命名所有列,而不是使用SELECT*
,因为它允许您确定地指定列顺序,并防止您在以后将一个大BLOB添加到表中时意外地拉入一个大BLOB(或任何其他模式更改)
我完全理解你关于重复字段名的问题
我也需要它,直到我编写了自己的函数来解决它。如果你使用PHP,你可以使用它,或者如果你有以下这些工具,用你正在使用的语言来编写你的代码
这里的诀窍是mysql\u field\u table()
返回表名,mysql\u field\u name()
您还可以修改该函数,以便在字段名重复时仅添加“column.”前缀
问候,
function mysql_rows_with_columns($query) {
$result = mysql_query($query);
if (!$result) return false; // mysql_error() could be used outside
$fields = mysql_num_fields($result);
$rows = array();
while ($row = mysql_fetch_row($result)) {
$newRow = array();
for ($i=0; $i<$fields; $i++) {
$table = mysql_field_table($result, $i);
$name = mysql_field_name($result, $i);
$newRow[$table . "." . $name] = $row[$i];
}
$rows[] = $newRow;
}
mysql_free_result($result);
return $rows;
}
函数mysql\u行\u和列($query){
$result=mysql\u query($query);
if(!$result)返回false;//mysql\u error()可以在外部使用
$fields=mysql\u num\u字段($result);
$rows=array();
而($row=mysql\u fetch\u row($result)){
$newRow=array();
对于($i=0;$i)其他方式?因为这需要大量的SQL@SauliusAntanavicius不,没有语法速记。努力…哈哈,已经有14行SQL了!但是比通过[14]等等访问行要好,错误的可能性太多了
function mysql_rows_with_columns($query) {
$result = mysql_query($query);
if (!$result) return false; // mysql_error() could be used outside
$fields = mysql_num_fields($result);
$rows = array();
while ($row = mysql_fetch_row($result)) {
$newRow = array();
for ($i=0; $i<$fields; $i++) {
$table = mysql_field_table($result, $i);
$name = mysql_field_name($result, $i);
$newRow[$table . "." . $name] = $row[$i];
}
$rows[] = $newRow;
}
mysql_free_result($result);
return $rows;
}