我正在寻找一种不列出所有字段名并AS
在每个字段名上使用的方法。也许这更像是一个mysql问题。为了清楚起见,我举一个例子:
table1: users
+-id-+------name------+-preferred_moose_id-+-preferred_preparation_id-+
| 20 | Chester Chore | 1 | 3 |
| 72 | George Garnish | 2 | 2 |
| 88 | Liver Laddykin | 2 | 3 |
+----+----------------+--------------------+--------------------------+
table2: moose_types
+-id-+------name------+-------size------+---------------diet--------------+
| 1 | Canadian Moose | Pretty Big | Corn and snow |
| 2 | Red Moose | Not as big | Dolphins |
| 3 | Horses | Size of a horse | Oats, cheese, okra, and farmers |
+----+----------------+-----------------+---------------------------------+
table3: preparation_types
+-id-+-------name-------+-difficulty-+
| 1 | Boiled | 3 |
| 2 | Stuffed | 5 |
| 3 | Butterflied | 9 |
+----+------------------+------------+
如果我有这样的 SQL:
SELECT users.*, moose_types.*, preparation_types.*
FROM users
INNER JOIN moose_types ON moose_types.id = users.preferred_moose_id
INNER JOIN preparation_types ON preparation_types.id = users.preferred_preparation_id
WHERE users.id = 88
然后我转储查询,我最终得到这样的结果:
+---diet---+-difficulty-+-id-+-id-+-id-+------name------+------name------+------name------+-preferred_moose_id-+-preferred_preparation_id-+-------size------+
| Dolphins | 9 | 88 | 88 | 88 | Liver Laddykin | Liver Laddykin | Liver Laddykin | 2 | 3 | Not as big |
+----------+------------+----+----+----+----------------+----------------+----------------+--------------------+--------------------------+-----------------+
注意被覆盖/复制的数据。Liver Laddykin 不喜欢吃 Liver Laddykinned Liver Laddykin,不管难度是不是 9。这是 CF 有意采取的保护措施,我可以理解他们为什么这样做。但是,必须有办法避免这种情况。第一个是AS
在查询中使用运算符并手动列出所有字段名称。但
再次,我重复:我想避免手动列出所有字段并AS
在每个字段上使用,因为这会使事情变得有点复杂,除非它可以在不列出字段的情况下完成并且可以通过冷融合应用,或者完成由 MySQL 提供。如果没有解决方案,我很好,但我知道我不是 CF 专家,当然也不是 mySQL 专家。请随时指出错误或我忽略的东西,即使它对你来说似乎微不足道。
更新 到目前为止感谢评论者!不幸的是,更改字段名称不是一种选择(尽管它肯定会起作用)。
澄清实际问题
我正在寻找的是某种方式,ColdFusion 或 MySQL 可以自动或以编程方式为我生成不同的字段名称(因此可区分),而无需手动列出每个字段(甚至试图避免使用 cfloop,我知道我让这很难),并使用AS
.
我在想可能有一些我不知道的高级 SQL。