【问题标题】:SQL select distinct substring where like muddleup howtoSQL 选择不同的子字符串,比如 mudleup howto
【发布时间】:2011-06-10 04:38:32
【问题描述】:

我有一个表格,其字段类似于:

ANIMAL
========
FISH 54
FISH 30
DOG 12
CAT 65
CAT 09
BIRD 10
FISH 31
DOG 10

该字段可能稍后会添加新的动物,例如

GOAT 72
DOG 20

我想做的是创建一个SELECT 查询,该查询为每个动物名称返回一个唯一的行,返回一个数据集,其中每种动物有一个行,我稍后可以对其进行解析以列出存在的动物在我的桌子上。

所以,在魔法之后,我会拥有

FISH 54
DOG 12
CAT 65
BIRD 10
GOAT 72

...我将从中列出我的清单。

到目前为止,我一直在处理子查询SELECT DISTINCTSUBSTRING(),但我觉得与 SO 蜂巢思维的强大功能相比,我想出的任何结果都可能相形见绌。有人可以帮忙吗?

更新

如果有帮助,我的失败尝试说明了我想要做什么:

SELECT DISTINCT substring(animal,1,4) FROM table;

只是现在我没有全名,只有一个子字符串。 :(

【问题讨论】:

    标签: sql select distinct substring max


    【解决方案1】:

    这适用于 SQL Server。如果你使用别的东西,你需要弄清楚leftcharindex的对应函数。 Left 当然可以用子字符串替换。

    select distinct left(T.Animal, charindex(' ', T.Animal, 1)-1)
    from YourTable as T
    

    结果:

    -------------------------
    BIRD
    CAT
    DOG
    FISH
    

    在 MySQL 中,您将使用 leftlocate。 (代码未测试)

    select distinct left(T.Animal, locate(' ', T.Animal, 1)-1)
    from YourTable as T
    

    【讨论】:

    • 越来越近了。这正是我正在寻找的......但我正在运行 MySQL。
    • 你已经做到了,我的好人。非常感谢。我今天一直在卖徽章,所以我用了我所有的赞成票,但你也会及时获得 +1。
    • 实际上,你现在得到了一个。 :)
    • 稍后再回来,这段代码非常有帮助,再次感谢。
    • 我如何也选择计数?
    【解决方案2】:

    您还可以使用以下方法获取动物名称列表:

    SELECT DISTINCT SUBSTRING_INDEX(animal, ' ', 1) FROM table_name;
    

    【讨论】:

    【解决方案3】:
    SELECT Name, Max(No)
    FROM Table
    Group By Name
    

    【讨论】:

    • 这也是一个很好的解决方案,虽然是通用的(我最初的问题更具体)。但回到它,仍然有帮助。 +1
    【解决方案4】:

    为什么不直接

    SELECT id, animal, value FROM table GROUP BY animal, id HAVING id = MIN(id)
    

    这应该会为您提供表格中动物的列表,每个动物都有第一个输入的值。

    如果你不需要这样选择值,那么就这样做:

    从表中按动物分组选择动物

    【讨论】:

    • 如果您需要表格中的最大数字,请使用 @Parkyprg。如果您根本不需要该号码,请使用我的号码。
    • 我需要你的,但只有每组的第一个代码。这是一个很好的开始,虽然我会去看看书——也许max 会派上用场。
    • 每一行都有ID吗?
    • 当然可以(嗯,一个自动递增的主键引用)。
    • 我知道你打算用这个去哪里,但很抱歉仍然不起作用,HAVING 出了点问题...而且我认为我不需要选择 value 字段在开始时?将继续调整...stackoverflow.com/questions/2739474/…
    猜你喜欢
    • 1970-01-01
    • 2015-07-08
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多