在 SQL 中为同一列创建单独的别名?

Creating separate alias for the same column in SQL?

提问人:CodingGenius9000 提问时间:10/18/2023 最后编辑:CodingGenius9000 更新时间:10/18/2023 访问量:56

问:

我想选择同一列并将它们存储在单独的别名下,以便我可以单独显示列中的某些值。

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 的所有值。

SQL 选择 嵌套

评论

1赞 Isolated 10/18/2023
您能提供示例数据和所需的输出吗?看起来,如果您尝试显示所有可能的组合,您可能只需要一个笛卡尔连接。
0赞 JNevill 10/18/2023
customer需要加入哪个需要加入哪个需要加入哪个需要加入哪个需要加入,以便在客户和他们购买的类别之间建立关系。你不能只是在sql中吊索表名,并希望数据库知道如何为你连接它们。如果“列出客户购买的类别并调整结果”不是您想要的结果,请澄清。您的非工作 sql 不够清晰,我们无法辨别。orderorderdetailproductcategories
0赞 jarlh 10/18/2023
在寻求 SQL 帮助时,一个最小的可重现示例是一个很好的开始。请注意,这里的问题应该是独立的,如果这里的大多数人应该遵循指向某些外部资源的链接,他们会跳过这个问题。

答:

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) 中找到查询的以下输出。

enter image description here

评论

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
托尼 颜色 颜色
托尼 气味 气味
托尼 重量 重量
莎拉 颜色 颜色
莎拉 气味 气味
莎拉 重量 重量
颜色 颜色
气味 气味
重量 重量

但是,如果您正在寻找不同的东西,那么您应该使用示例数据和所需的输出来更新您的问题,所有这些都格式化为文本。