【问题标题】:Adding an id on mysql result [closed]在mysql结果上添加一个ID [关闭]
【发布时间】:2013-06-30 06:52:45
【问题描述】:

基本上我正在尝试加入 2 个表,然后返回结果,下面是我使用的代码。 问题是,假设我只想从“Tina”到“Ben”获取行。这是不可能的,因为它没有 ID,如果我以某种方式包含他们的 ID,它将是随机数而不是顺序。有没有办法处理这类问题?

SELECT names.name, COUNT(item) AS items
FROM names
LEFT JOIN names_items 
  ON names.name = names_items.name
GROUP BY names.name
ORDER BY COUNT(item) DESC

结果会是这样的。

| Names  | Items  |
  Bob       60
  Tina      32
  Arthur    43
  Ben       21
  Ronie     54

【问题讨论】:

  • 这种情况下可以使用where子句。
  • 你能说得更具体点吗?
  • 如果你知道行的顺序你可以使用limit
  • 我可以使用限制,我对此没有任何问题,但如果我只想获得从 'Tina' 到 'Ben' 的结果怎么办
  • 你能先问一个正确的问题吗?查询应该如何决定抓取哪些行?

标签: php mysql sql


【解决方案1】:

您可以在创建所有这些表的同时创建一个列,使列名称为 id,id 的属性将是

-> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

然后你可以使用这个id来选择你想要的

【讨论】:

    【解决方案2】:

    您可以尝试添加“WHERE names.name in ('Tina', 'Ben', 'Arthur')?

    这是基于您想要 Tina、Ben 和 Arthur 的信息。

    或 LIMIT (2,x)(其中 x 是 Tina 和 Ben 之间的距离)

    这仅适用于 Tina 始终是第二条记录,并且 Ben 与 Tina 的距离始终相同且始终在 Tina 之后的情况。

    一个更复杂的方法是:

    1. 将您在 OP 中的表设置为临时表。
    2. 选择 name = 'tina' 作为 var1 的计数,并选择 name = 'ben' 作为 var2 的项目
    3. 做一个案例,其中 var1 > var2 - select * where count 2 else select * where count > var1 and count

    我不认为这个问题有一个“好的”解决方案,如果我们知道为什么你想要 Ben 和 Tina 之间的每个人......Ben 和 Tina 有什么特别之处吗?

    【讨论】:

      猜你喜欢
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 2021-08-09
      • 1970-01-01
      • 2013-01-03
      • 1970-01-01
      • 2014-01-16
      • 2017-03-07
      相关资源
      最近更新 更多