我正在开发一个Laravel项目,我必须处理一些SQL的东西。
由于我想在严格模式下保持MySQL,我必须用一个没有#34;组的查询替换以下查询#34;。 我已经读过,我可以通过加入来达到这个目的,但我真的不知道如何在这个例子中做到这一点。
首先,这是我的示例表,名为" fruits"。请不要介意冗余,我会按原样获取数据:
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
我想得到下表:
fruitName | fruitModel -------------------------- Banana (Nr 1) | Banana Apple (Nr 1) | Apple Strawberry | Strawberry
因此对于每个我都希望拥有一个 fruitName的fruitModel。它不相关,我得到了什么确切的fruitName。所以像下面这样的结果也可以:
fruitName | fruitModel -------------------------- Banana (Nr 3) | Banana Apple (Nr 2) | Apple Strawberry | Strawberry
我有一个查询,它可以很好地实现这一目标,但是我必须在没有"组的情况下构建一个查询"在严格模式下,每个选定的列都必须在"组中显示为"。这是我目前的查询:
@Entity
public class Products {
@Id
private Long productid;
@Column(name = "ProductName")
private String productname;
private Long supplierid;
@ManyToOne
private Categories categoryid;
private String quantityperunit;
private Double unitprice;
private Long unitsinstock;
private Long unitsonorder;
private Long reorderlevel;
private String discontinued;
有没有人知道如何用"替换"组?部分加入一些东西? 谢谢。
答案 0 :(得分:2)
GROUP BY
很好,因为您确实希望每个水果模型都有一个聚合。只有您忘记在水果名称上应用聚合功能。请使用ANY_VALUE
:
SELECT fruitModel, ANY_VALUE(fruitName) AS fruitName FROM fruits GROUP BY fruitModel;
ANY_VALUE
告诉DBMS您对该组的任何值都没问题。
(正如您还标记了MariaDB:我不认为MariaDB功能ANY_VALUE
。因此,对于此DBMS,只需使用MIN
或MAX
。)