在mysql结果上添加id

时间:2013-06-30 06:52:46

标签: php mysql sql

基本上我试图加入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

2 个答案:

答案 0 :(得分:2)

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

-> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

然后您可以使用此ID来选择您想要的内容

答案 1 :(得分: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和count> 2否则选择* where count> var1和count< VAR2
  4. 我不认为这个问题有一个“好”的解决方案,如果我们知道为什么你想要Ben和Tina之间的所有人,那么回答会更容易...... Ben和Tina有什么特别之处吗?