【问题标题】:SQL Complex query with inner join and where between具有内部联接的 SQL 复杂查询以及介于两者之间的位置
【发布时间】:2021-05-25 19:01:47
【问题描述】:

我无法理解为什么我的查询不起作用,而且我已经搜索了现有的主题。 我的目标 我正在尝试从我的 MySQL 中显示选定时间段内排名前 5 位的投诉类型。

预期结果 一个 5 行的表格,第一列显示 COUNT,第二列显示我的 Ticket Type 的描述

我正在使用的查询返回错误

SELECT
  COUNT(t.ticketType) AS total_amount, 
  tt.typeTekst AS description
  FROM Ticket t
  WHERE t.ticketStartTime BETWEEN 1612443540 AND 1613393340
  INNER JOIN TicketType tt ON t.ticketType = tt.typeId
  GROUP BY description
  ORDER BY total_amount desc
  LIMIT 5

类似查询有效,但不符合我的期望

没有正确的工单描述的表格

SELECT
  COUNT(t.ticketType) AS total_amount, 
  t.ticketType AS description
  FROM Ticket t
  WHERE t.ticketStartTime BETWEEN 1612443540 AND 1613393340
  GROUP BY description
  ORDER BY total_amount desc
  LIMIT 5
total_amount description
4 7
3 6
2 10
2 5
1 30

表格没有选定的时间段,但有说明

SELECT
  COUNT(t.ticketType) AS total_amount,
  tt.typeDescription AS description
  FROM Ticket t
  INNER JOIN TicketType AS tt ON t.ticketType = tt.typeId 
  GROUP BY description
  ORDER BY total_amount desc
  LIMIT 5
total_amount description
31 TicketType Placeholder A
10 TicketType Placeholder B
8 TicketType Placeholder C
5 TicketType Placeholder D
4 TicketType Placeholder E

感谢您的宝贵时间!

【问题讨论】:

  • WHERE 是跟在FROM 子句之后的SQL 子句JOINFROM 子句中的运算符

标签: mysql sql join group-by where-clause


【解决方案1】:

在加入所有表后使用 where 子句。请尝试以下查询:

SELECT
  COUNT(t.ticketType) AS total_amount, 
  tt.typeTekst AS description
  FROM Ticket t
  INNER JOIN TicketType tt ON t.ticketType = tt.typeId
  WHERE t.ticketStartTime BETWEEN 1612443540 AND 1613393340
  GROUP BY description
  ORDER BY total_amount desc
  LIMIT 5

【讨论】:

  • 哦,你是救命稻草!浪费了太多时间试图找出问题所在,而且这是一个小细节......谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多