我正在寻找一种方法,不会列出所有字段名,并在每个字段名上使用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 |
+----------+------------+----+----+----+----------------+----------------+----------------+--------------------+--------------------------+-----------------+
注意数据被覆盖/重复。肝脏Laddykin不喜欢吃Laddykinned Liver Laddykin,无论它是否是9的难度。这是CF故意做的一个安全措施,我可以理解他们为什么这样做。但是,必须有办法避免这种情况。第一个是在查询中使用AS
运算符并手动列出所有字段名称。 BUT
再次,我迭代:我想避免手动列出所有字段并在每个字段上使用AS
,因为这会使事情变得复杂,除非可以在不列出字段的情况下完成并且可以通过coldfusion或MySQL完成。如果没有解决方案,我很好,但我知道我不是CF专家,当然不是 mySQL专家。请随意指出错误或我忽略的东西,即使它对你来说似乎微不足道。
更新 到目前为止,感谢评论者!不幸的是,更改字段名称不是一种选择(虽然它肯定会起作用)。
我正在寻找的是某种方式,ColdFusion或MySQL可以自动或以编程方式为我提供不同的字段名称(因此可以区分),而无需手动列出每个字段(甚至试图避免使用cfloop ,我知道我正在努力做到这一点,并使用AS
声明它。
我在想,可能会有一些我不知道的高级SQL。
答案 0 :(得分:0)
对于ColdFusion,您的列名称必须是唯一的,没有办法解决这个问题。
但是,列出字段名称并在每个字段上使用AS并不是那么糟糕。通过一个或两个快速循环,您可以动态生成SQL(无需明确地提出结果),您将全部设置好!