我想做这样的事情:
SELECT table.id AS prefix_id, table.name AS prefix_name
...并将前缀动态添加到所有字段名称,而不是手动选择它们(即SELECT table.* AS prefix_*
或其他内容)
希望我已经准确地描述了这一点。有什么想法吗?
修改
要清楚,我要问的原因是确保我的查询结果包含我调用的每个表中的每个列,即使存在重复的字段名称。例如,我可能有一个包含大量字段的表,这意味着我不想手动为所有字段设置别名。此外,如果3个表格中有一个名为name
的字段,我的结果将不会包含三个name
个结果;它会有一个。 我想避免含糊不清我的列名。
答案 0 :(得分:4)
为了避免在具有多个表的列中出现歧义,您必须手动指定在多个表中具有相同名称的每个列名。
http://dev.mysql.com/doc/refman/5.0/en/identifier-qualifiers.html
答案 1 :(得分:0)
引用结果时,可以通过tablename.column引用每一列。因此,您有一个附加到每个列名称的默认前缀。
SELECT table.id,table.name,other.name FROM table,other Where other.name = table.name;
答案 2 :(得分:0)
我可以想象,如果列表中有多个数据模型需要从单个SQL查询填充,这可能会很有用。
在 SELECT 查询之前,应该可以在这些表上使用 DESCRIBE 或 SHOW COLUMNS 。这样,您就知道每个表的所有字段名称。但这对任何潜在的字段名称冲突都无济于事。
我不打算评论这是不是一个好主意。每个开发人员必须决定在灵活性,懒惰和良好实践之间划清界限。
答案 3 :(得分:0)
在mysqli中你可以使用php函数
mysqli_fetch_fields()
用于fieldinformations - 所以你得到每个collumn的表名