mysql 也与其他东西不同

发布于 2024-12-25 13:07:45 字数 298 浏览 0 评论 0原文

这应该非常简单,但我无法使用搜索找到正确的语法。

我有:

SELECT distinct name, id FROM table1 WHERE length<6;

我想返回所有不同名称的 id 和名称(不是不同的 id,因为无论如何这是一个自动增量),但此查询当前返回所有名称和 id,而不仅仅是不同的名称...

正确的是什么方法来做到这一点?

编辑:长度是另一个列名称,与此处无关。

This should be very simple, but I cannot find the correct syntax using search.

I have:

SELECT distinct name, id FROM table1 WHERE length<6;

I want to return the id's and names of all distinct names (not distinct ids, since thats an auto increment anyway), but this query is currently returning all names and ids, not just the distinct names...

What's the correct way to do this?

Edit: Length is another columns name and not relevant specifically here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

醉梦枕江山 2025-01-01 13:07:45

所以听起来您想要不同的名称和任何关联的ID。 DISTINCT 将返回不同的行作为所选列的组合,并且由于 id 是自动递增的,这意味着所有行。而是使用聚合。

此查询将返回名称以及第一个自动递增的 id

SELECT
  name, 
  MIN(id) as id
FROM table1
WHERE length < 6
GROUP BY name

So it sounds like you want distinct names, and any associated id. DISTINCT will return distinct rows as combinations of the selected columns, and since id is auto-increment, that means all rows. Instead use an aggregate.

This query will return the name, and the first auto-increment id with it:

SELECT
  name, 
  MIN(id) as id
FROM table1
WHERE length < 6
GROUP BY name
可是我不能没有你 2025-01-01 13:07:45

不同的名称:

SELECT DISTINCT name 
FROM table1 
WHERE length < 6

不同的名称及其所有 id:

SELECT name, GROUP_CONCAT(id) 
FROM table1 
WHERE length < 6
GROUP BY name

不同的名称和最低 id:

SELECT name, MIN(id)              --- or MAX(id) for the highest id
FROM table1 
WHERE length < 6
GROUP BY name

不同的名称和(或多或少)随机 id(这仅适用于 MySQL,不适用于其他 DBMS):

SELECT name, id            
FROM table1 
WHERE length < 6
GROUP BY name

Distinct names:

SELECT DISTINCT name 
FROM table1 
WHERE length < 6

Distinct names and all their ids:

SELECT name, GROUP_CONCAT(id) 
FROM table1 
WHERE length < 6
GROUP BY name

Distinct names and the lowest id:

SELECT name, MIN(id)              --- or MAX(id) for the highest id
FROM table1 
WHERE length < 6
GROUP BY name

Distinct names and a (more or less) random id (this works in MySQL only and no other DBMS):

SELECT name, id            
FROM table1 
WHERE length < 6
GROUP BY name
坏尐絯℡ 2025-01-01 13:07:45

从 table1 中选择 id, name 作为 t0 join
(从 table1 中选择不同的名称)作为 t1
上 t0.name = t1.name;

select id, name from table1 as t0 join
( select distinct name from table1 ) as t1
on t0.name = t1.name;

乖乖公主 2025-01-01 13:07:45

也许你的意思是

where length(name) < 6

Maybe you mean

where length(name) < 6
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文