gpt4 book ai didi

MySql查询: ordering by two fields in two tables

转载 作者:行者123 更新时间:2023-11-29 15:05:40 24 4
gpt4 key购买 nike

我有两个表存储成员数据

成员:id、field1、field2 和 field3...

members_extra:memberId、someExtraField1 和 someExtraField2

members_extra.memberId是引用members.id的外键

“members_extra”可能有也可能没有与“members”中的行相关的行

假设:“members”中有 1000 个成员,“members_extra”中有 50 行包含额外信息

现在我想搜索“members”并根据“member.field2”对结果进行排序...但我希望拥有额外信息(在members_extra中)的成员列在那些没有额外信息的成员之前

现在我使用member.field3作为ENUM('true','false'),它指示该成员是否有额外的信息,并按如下顺序排序:ORDER BY field3 ASC,field2 ASC ...这工作正常,但是我不喜欢这种方法,因为每次从members_extra 插入或删除某些内容时,我都必须更新members.field3

如何在不使用members.field3的情况下做到这一点?

谢谢

最佳答案

您可以包含一个关于members_extra.memberId是否存在的ORDER BY:

SELECT *
FROM members
LEFT JOIN members_extra
ON members.id = members_extra.memberId
ORDER BY members_extra.memberId IS NULL, members.field2

现在您不需要members.field3,您可以将其从架构中删除。这将使您的数据库更接近规范化形式。

关于MySql查询: ordering by two fields in two tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2167724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com