mysql也与其他东西截然不同

时间:2012-01-08 12:55:24

标签: php mysql

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

我有:

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

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

这样做的正确方法是什么?

编辑:长度是另一个列名,在这里没有特别相关。

4 个答案:

答案 0 :(得分:2)

不同的名字:

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

答案 1 :(得分:2)

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

此查询将返回名称,并使用它返回第一个自动增量id

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

也许你的意思是

where length(name) < 6