-5

基本上我正在尝试加入 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
4

2 回答 2

2

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

-> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

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

于 2013-06-30T07:04:37.273 回答
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 < var1 and count > 2 else select * where count > var1 and count < var2

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

于 2013-06-30T07:18:12.510 回答