这应该很简单,但我找不到使用搜索的正确语法。
我有:
SELECT distinct name, id FROM table1 WHERE length<6;
我想返回所有不同名称的id和名称(不是不同的id,因为那是一个自动增量),但是这个查询当前返回所有名称和ID,而不仅仅是不同的名称......
这样做的正确方法是什么?
编辑:长度是另一个列名,在这里没有特别相关。
答案 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