gpt4 book ai didi

sql - 无法获取唯一值

转载 作者:可可西里 更新时间:2023-11-01 07:46:09 28 4
gpt4 key购买 nike

我正在使用我的 sql 从数据库中获取唯一值

我的查询如下所示,但不知何故我无法获得唯一的结果

                    SELECT
DISTINCT(company_name),
sp_id
FROM
Student_Training
ORDER BY
company_name

sp_id是主键,company_name是需要唯一的公司名

看起来如下

sp_id, company_name
1 comp1
2 comp2
3 comp2
4 comp3

只是不对这个唯一的进行排序

最佳答案

DISTINCT 在全局范围内工作,适用于所有 您选择的列。此处您获得了不同的 (sp_id, company_name) 值,但每列的各个值可能会显示重复值。

话虽如此,MySQL 授权语法 SELECT DISTINCT(company_name), sp_id 的真正意思是 SELECT DISTINCT(company_name, sp_id) 是非常具有欺骗性的。顺便说一下,您根本不需要括号。

编辑

实际上,DISTINCT(company_name), sp_id 是有效的语法是有原因的:在表达式周围添加括号始终是合法的,尽管它可能有点矫枉过正:company_name 是相同的作为 (company_name) 甚至 (((company_name)))。因此,那段 SQL 的真正含义是:“DISTINCT [括号中的公司名称],[sp_id]”。括号附在列名上,而不是 DISTINCT 关键字,与聚合函数名称不同,例如,它不需要括号(AVG sp_id 是不合法的,即使对于人类读者来说是明确的,它是总是 AVG(sp_id)。)

就此而言,您可以编写 SELECT DISTINCT company_name, (sp_id)SELECT DISTINCT (company_name), (sp_id),它与普通语法完全相同没有括号。将列列表放在括号内 – (company_name, sp_id) – 不是合法的 SQL 语法,但是,您只能选择未加括号的“普通”列列表(表单的拼写检查器告诉我这个最后一个表达式不是英语单词,但我不在乎。毕竟是星期五下午)。

因此,任何数据库引擎都应该接受这种令人困惑的语法:-(

关于sql - 无法获取唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1613099/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com