【问题标题】:Avoid double entry in SELECT query MYSQL避免在 SELECT 查询 MYSQL 中重复输入
【发布时间】:2012-08-18 09:51:14
【问题描述】:

如何避免在下面的查询中列出多条记录?

SELECT DISTINCT application_forms.date_submitted, 
                application_forms.application_type, 
                application_forms.online_offline2, 
                application_forms.decision, 
                application_forms.id, 
                notes.post_by_id 
FROM    application_forms 
             LEFT  JOIN notes 
                 ON  notes.user_id = application_forms.id  

我希望列出 1 条不重复的记录

【问题讨论】:

  • 那么你得到了什么?它与您的预期有何不同?它不是选择具有不同值的记录吗?桌子长什么样?
  • DISTINCT 适用于整行,而不仅仅是单列。你真正想做的是什么?你能告诉我们你的记录和你想要的结果吗?
  • 我想列出来自 application_form 的所有记录,并根据第二张表的注释,显示不同的图像。因此,可以说代理添加了注释,然后图像为橙色,一旦添加了另一个注释,我的管理图像为绿色,当没有注释时图像为黑色,到目前为止,它的工作方式就像开始时的黑色图像正在工作,橙色图像也在工作, 但是一旦管理员添加注释然后我有 2 条记录从应用程序 _form 中列出,1 条显示绿色和其他橙色图像,它始终应该是为特定记录插入的最后一条注释
  • table application_forms 得到了预订,table notes 得到了注释(每次预订多个注释)加上 application_forms.id = 唯一 ID AND notes.user_id = id 将 application_forms 与注释连接
  • 每次有人添加注释时,我应该更改 1 个预订和图像(取决于用户:管理员、代理、无注释)

标签: mysql select distinct


【解决方案1】:

你可以这样做

SELECT      application_forms.date_submitted, 
            application_forms.application_type, 
            application_forms.online_offline2, 
            application_forms.decision, 
            application_forms.id, 
            n.post_by_id 
FROM    application_forms 
         LEFT  JOIN (SELECT user_id , MAX(id) , notes.post_by_id FROM notes) as n
             ON  n.user_id = application_forms.id  
GROUP BY application_forms.date_submitted

见左连接 MAX(id) 选择每个音符的最后一条记录并将其连接到外部查询行

【讨论】:

  • 好吧 quear 比较复杂,我只列出了一部分
  • SELECT DISTINCT application_forms.date_submitted, application_forms.online_offline, application_forms.comp_by_app, application_forms.notes, application_forms.online_offline2, application_forms.decision, application_forms.id, notes.post_by_id FROM application_forms LEFT JOIN notes ON notes.user_id = application_forms.id WHERE {$NXTFilter_rsapplication_forms1} AND application_forms.user_id = %s and (application_forms.archivea is null or application_forms.archivea != 1) ORDER BY {$NXTSort_rsapplication_forms1}", GetSQLValueString($colname_rsapplication_forms1, "int"
  • 使用 max 在左连接中的任何内容都会为您解决问题,现在取决于您如何根据自己的要求使用它
  • “字段列表”中的未知列“id”
  • 您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的“WHERE 1=1 AND application_forms.user_id = 158 and (application_forms.archivea i”附近使用正确的语法
猜你喜欢
  • 2015-04-25
  • 1970-01-01
  • 1970-01-01
  • 2011-12-15
  • 2020-03-16
  • 2011-01-31
  • 2021-03-06
  • 2019-04-16
  • 1970-01-01
相关资源
最近更新 更多