草庐IT

join_group

全部标签

MySQL UPDATE、MAX、JOIN 查询

我有两个表:-manu_tableproduct_id,manufacturer1,ford2,ford3,toyotaproduct_tableproduct_id,score1,802,603,40我想将每个制造商得分最高的product_id存储在汇总表中:-summary_tablemanufacturer,max_scoreford,1toyota,3到目前为止我有:-UPDATEsummary_tablestSETmax_score=(SELECTproduct_idFROM(SELECTmanufacturer,product_id,max(score)asmsFROMm

mysql - 数据变更历史与审计表 : Grouping changes

假设我想将用户和组存储在MySQL数据库中。他们有一个关系n:m。为了跟踪所有更改,每个表都有一个审计表user_journal、group_journal和user_group_journal。MySQL触发器在每次INSERT或UPDATE时将当前记录复制到日志表(不支持DELETES,因为我需要应用程序用户删除记录的信息——所以有一个标记active将被设置为0而不是删除)。我的问题是:假设我一次将10个用户添加到一个组中。当我稍后在应用程序的用户界面中单击该组的历史记录时,我希望将这10个用户的添加视为一步,而不是10个独立的步骤。是否有一个很好的解决方案来将这些更改组合在一起

MySQL COUNT NULL 内容按列,GROUP 按列

如何按字段/列计算非空条目?我看到了几个按行计数的答案,但无法破解如何对列进行计数。输入:╔════╦════════╦════════╦════════╗║id║field1║field2║field3║║1║do║re║me║║2║fa║║so║║3║la║te║║║4║da║re║║╚════╩════════╩════════╩════════╝输出:id4field14field23field32我正在尝试衡量我正在迁移的一个非常脏的数据库中的字段使用情况。这个数据库中大约有50列,所以我正在寻找一种不涉及输入每个列名称的方法。由于数据存储中的不一致,我可能还必须将该搜索扩展

mysql - 将双重嵌套查询转换为 JOIN 语句,以及其他优化

我得到了这个非常具体的查询,它返回的正是我所需要的。正如我们所知,mysql中的嵌套查询在运行时方面可能非常糟糕。如果有人能帮助我将以下代码转换为JOIN语句,我将不胜感激。当然,我们欢迎并鼓励任何其他优化。SELECTtitleFROMexp_channel_titlesWHEREentry_idIN(SELECTrel_child_idFROMexp_relationshipsWHERErel_idIN(SELECTfield_id_202FROMexp_channel_dataWHEREentry_id=19971));谢谢! 最佳答案

mysql - SQL join left 获取 MAX(date)

我有这些表:通知内部身份cdateDATETIME...主题编号名字notice_themeid_noticeid_theme我想获取每个主题的最新通知。SELECTid_theme,n.idFROMnotice_themeLEFTJOIN(SELECTid,cdateFROMnoticeORDERBYcdateDESC)ASnONnotice_theme.id_notice=n.idGROUPBYid_theme结果不好。一个主意?谢谢。 最佳答案 有很多方法可以解决这个问题,但我习惯于这样做。需要一个额外的子查询来分别计算每个I

php - MySQL GROUP BY 和 ORDER BY DESC

这个问题在这里已经有了答案:Gettopnrecordsforeachgroupofgroupedresults(12个答案)关闭9年前。这是我的完整查询:SELECT*FROM`clientgroupassign`LEFTJOIN`clients`ON`clientgroupassign`.clientId=`clients`.clientIdLEFTJOIN`users`ON`carerId`=`userId`LEFTJOIN(SELECT*FROM(SELECT*FROM`contacts`WHERE`contactGroup`=4ORDERBY`contactId`DESC)a

php - mysql select/delete using join over 四个表

我有四个表(在[]中是列):用户[id]产品[id]productRatings[id,value,user,product]评论[id,product,user]我想选择/并最终删除productRatings,因为同一用户对该产品没有相关评论。也就是说,如果用户对产品进行了评分但未发表评论,则应删除该评分。我相信我可以通过使用两个查询来实现这一点,首先:SELECTuser,productFROMproductRatings然后对于每一行:SELECTCOUNT(*)FROMcommentsWHEREproduct=productRatings.productANDuser=pro

php - 如何在 Yii2 Active Record 中为关系模型使用 JOIN?

我有2个表,分别是Books和Reviews。Books表与Reviews是一对多的关系。我想搜索书籍并按评论对它们进行排序。例如,如果有10本书可用并且书在Reviews中有评论,那么我想通过使用WHERE子句找到所有书并计算那里的评论,然后根据评论编号订购所有书。我的SQL查询如下:Books::find()->where(['and',['like','books.bookName',$bookName],['like','books.status','Enabled']])->joinWith(['reviews'=>function($q){$q->select(['COUN

MySQL Group By每种类型的前N个数

我有一个这样的表:RankLetter1A2A3B4A5C6A7C8C9B10C我需要按升序排列的每个字母的前2个:RankLetter1A2A3B5C7C9B我该怎么做?使用GROUPBY仅获得前1名是相当简单的,但我似乎无法让它为多个条目工作 最佳答案 SELECTmo.Letter,md.RankFROM(SELECTDISTINCTletterFROMmytable)moJOINmytablemdONmd.Letter>=mo.LetterANDmd.Letter您需要在(Letter,Rank)上有一个复合索引(按此顺序)

php - MySQL GROUP BY UNIX 时间戳

我正在尝试从MySQL数据库中获取一些行,并按发布日期对它们进行分组。最终结果我想要以下..星期一-第1条-第2条-第3条星期二-第1条-第2条星期三-第1条-第2条-第3条-第4条等等,我不确定这是否可以在没有PHP做额外工作的情况下单独在MySQL中完成。这是我目前的查询,但似乎没有按天分组。SELECTcms_news.news_id,cms_news.news_title,cms_news.news_date,cms_news.news_category,cms_news.news_source,cms_news.news_type,cms_news.news_contentF