MySQL:Replace";分组方式;加入

MySQL:Replace";分组方式;加入,mysql,sql,mariadb,Mysql,Sql,Mariadb,我现在正在开发一个Laravel项目,我必须处理一些SQL的东西 由于我想保持MySQL处于严格模式,我必须用一个没有“groupby”的查询替换下面的查询。 我已经读过,我可以通过连接来实现这一点,但是我真的不知道在这个例子中如何实现 首先,这里是我的示例表,名为“水果”。请不要介意冗余,我按原样获取数据: fruitName | fruitModel -------------------------- Banana (Nr 1) | Banana Banana (Nr 2) | B

我现在正在开发一个Laravel项目,我必须处理一些SQL的东西

由于我想保持MySQL处于严格模式,我必须用一个没有“groupby”的查询替换下面的查询。 我已经读过,我可以通过连接来实现这一点,但是我真的不知道在这个例子中如何实现

首先,这里是我的示例表,名为“水果”。请不要介意冗余,我按原样获取数据:

fruitName | fruitModel -------------------------- Banana (Nr 1) | Banana Banana (Nr 2) | Banana Banana (Nr 3) | Banana Apple (Nr 1) | Apple Apple (Nr 2) | Apple Strawberry | Strawberry Banana (Nr 4) | Banana 有没有人知道如何用一些join的东西来代替“groupby”部分?
谢谢。

分组方式很好,因为您确实需要每个水果模型的聚合。只是您忘了对水果名称应用聚合函数。为此使用
任意值

SELECT fruitModel, ANY_VALUE(fruitName) AS fruitName FROM fruits GROUP BY fruitModel;
ANY_值
告诉DBMS您对该组的任何值都满意


(正如您还标记了MariaDB:我认为MariaDB没有任何值。因此,对于这个DBMS,只需使用
MIN
MAX

谢谢。问题是,我使用的是不允许选择多个列,但只按一列分组的函数。@LeoV
ANY\u VALUE
是一个聚合函数<代码>仅全组用户禁止非聚集非分组用户columns@LeoV:我对此表示怀疑。我不知道“严格模式”,但我只能想象这意味着您必须对非分组列应用聚合函数。你试过我的问题了吗?我肯定。尽管如此,您使用“min”/“max”的回答对我来说很有用,因为这是一个聚合函数,而不是@Caleth所说的列。谢谢。“这与我得到的确切名称无关。”这种说法通常是糟糕数据模型的症状。这应该很重要!如果没有一个小组,你所要求的是不可能的。你还没有理解这个问题。也许这是一个糟糕的数据模型,但如果我从API获得这样的数据,我就不得不接受它。此外,在应用程序的其他部分中,精确值是相关的。 fruitName | fruitModel -------------------------- Banana (Nr 3) | Banana Apple (Nr 2) | Apple Strawberry | Strawberry
SELECT fruitModel, fruitName FROM fruits GROUP BY fruitModel
SELECT fruitModel, ANY_VALUE(fruitName) AS fruitName FROM fruits GROUP BY fruitModel;