Mysql 根据特定条件返回唯一行

Mysql 根据特定条件返回唯一行,mysql,sql,Mysql,Sql,我需要一个查询,将返回不同的行,但不会返回任何行有重复的水果,其中一行是'批准'。注意:最多只能有两个同名水果 例如,理想的结果是: 到目前为止,我得到的只是: SELECT DISTINCT * FROM Food; 但这显然仍然返回其中一行,其中包含“苹果”水果 SELECT DISTINCT * FROM Food WHERE Fruit NOT IN (SELECT (UNIQUE Fruit) FROM Food WHERE Status = 'Approved'); 试试这个查

我需要一个查询,将返回不同的行,但不会返回任何行有重复的水果,其中一行是'批准'。注意:最多只能有两个同名水果

例如,理想的结果是:

到目前为止,我得到的只是:

SELECT DISTINCT * FROM Food;
但这显然仍然返回其中一行,其中包含“苹果”水果

SELECT DISTINCT * FROM Food WHERE Fruit NOT IN (SELECT (UNIQUE Fruit) FROM Food WHERE Status = 'Approved');

试试这个查询。

我想你也许可以用另一种方式解决这个问题?要获得相同的结果,可以添加
WHERE
子句,例如:

选择DISTINCT*FROM Food,其中Status='bunded'

您还可以更改数据模型,以便更新水果的状态,而不是为同一水果添加另一条记录(如果这符合应用程序的目的)

如果您想维护模式并获得相同的结果,我相信您可以:
选择不同的(水果)水果,按水果从食物顺序中选择状态,状态ASC


您可以对所需的结果集使用一些条件聚合,如

select fruit, min(status)
from demo
group by fruit
having sum(status = 'Approved') = 0
and sum(status = 'Bought') > 0
或者只需使用
选择水果,“购买”作为状态


可以通过几种方式完成。从一个
NOT EXISTS
查询开始,尝试
groupby
HAVING
等。请看不同的星号是完全没有意义的,因为行可以相同,不是所有表都有唯一的主键。根据定义,所有表都有主键。如果没有,那就不是桌子。但这是一条红鲱鱼这是胡言乱语