提问人:CodingGenius9000 提问时间:10/18/2023 最后编辑:CodingGenius9000 更新时间:10/18/2023 访问量:56
在 SQL 中为同一列创建单独的别名?
Creating separate alias for the same column in SQL?
问:
我想选择同一列并将它们存储在单独的别名下,以便我可以单独显示列中的某些值。
SELECT Customers.CustomerName AS Customer_Name,
(SELECT CategoryName FROM Categories) AS Cate,
(SELECT CategoryName FROM Categories) AS Cate2
FROM Customers
这是我尝试过的,但它只从 CategoryName 列返回一个值?
https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_join_inner_prod
我已链接一个在线数据库,其中包含我正在使用的数据库^
我希望在运行查询时能够看到 Cate1 和 Cate2 中 CategoryName 的所有值。
答:
0赞
Bhavesh Shah
10/18/2023
#1
从您的问题来看,您似乎要对每行的所有类别进行分组。下面的查询将选择所有客户,并为每行的所有类别名称分组。
SELECT Customers.CustomerName AS Customer_Name,
(SELECT GROUP_CONCAT(Distinct CategoryName) FROM Categories) AS Cate,
(SELECT GROUP_CONCAT(Distinct CategoryName) FROM Categories) AS Cate2
FROM Customers
在 MySql (https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_join_inner_prod) 中找到查询的以下输出。
评论
1赞
Bhavesh Shah
10/18/2023
@jarlh,更新了答案。上述查询将在MySQL中正常执行。
0赞
Isolated
10/18/2023
#2
看起来您确实在尝试进行笛卡尔连接,但采用了一种不寻常的方法。如果是这样,那么我会简单地用这个......
with customers as (
select 'Tony' as CustomerName union all
select 'Sarah' union all
select 'Chih'
),
categories as (
select 'color' as CategoryName union all
select 'odor' union all
select 'weight'
)
select
cus.CustomerName,
cat.CategoryName as cat1,
cat.CategoryName as cat2
from customers cus, categories cat;
客户名称 | 猫1 | 猫2 |
---|---|---|
托尼 | 颜色 | 颜色 |
托尼 | 气味 | 气味 |
托尼 | 重量 | 重量 |
莎拉 | 颜色 | 颜色 |
莎拉 | 气味 | 气味 |
莎拉 | 重量 | 重量 |
致 | 颜色 | 颜色 |
致 | 气味 | 气味 |
致 | 重量 | 重量 |
但是,如果您正在寻找不同的东西,那么您应该使用示例数据和所需的输出来更新您的问题,所有这些都格式化为文本。
下一个:获取每组的前 1 行
评论
customer
需要加入哪个需要加入哪个需要加入哪个需要加入哪个需要加入,以便在客户和他们购买的类别之间建立关系。你不能只是在sql中吊索表名,并希望数据库知道如何为你连接它们。如果“列出客户购买的类别并调整结果”不是您想要的结果,请澄清。您的非工作 sql 不够清晰,我们无法辨别。order
orderdetail
product
categories