Mysql查询从一系列记录中获取记录

时间:2014-01-16 13:42:08

标签: php mysql

我的数据库中有以下表格,现在我想获取从一个产品值开始到下一个产品值的所有记录。我的意思是从一个“产品”开始到下一个产品值的所有记录。 更新:

Item_Type将始终具有两个值product或rule。因此,我们必须找到从product value到最后一个规则值的所有记录。

id   Item_Type       Product_ID 
1    product          512350       
2    rule             541   
3    rule             5431
4    rule             5421  
5    rule             5431  
6    rule             5241
7    product          5350  
8    rule             5541   
9    rule             5341
10    rule             5421  
11    rule             5141  
12    rule             54411   
13    product          51250   
14    rule             541   
15    rule             541
16    rule             541  
17    rule             541  
18    rule             541 
19    product          512350   
20    rule             541   
21    rule             541  

请帮我解决一下如何在mysql查询中完成。

2 个答案:

答案 0 :(得分:0)

例如,如果你想从产品5350开始,你可以做一些可怕的事情:

SELECT *
FROM thetable
WHERE id > (SELECT id
            FROM thetable
            WHERE Product_ID = 5350)
AND id < (SELECT MIN(id)
          FROM thetable
          WHERE Item_Type = product
          AND id > (SELECT id FROM thetable WHERE Product_ID = 5350))

可能有一个更简单的查询,但对于这种特定情况,我认为效率不是必须的。不过,我必须再说一遍,两桌的方法会更清晰,更有意义,不需要这种糟糕的查询方式。

答案 1 :(得分:-1)

这是基本的SQL选择查询:

SELECT *
FROM $tableName
ORDER BY $orderColumn
LIMIT $firstRowNo, $rowsCount

其中

  • $ tableName是数据库
  • 中Table的名称
  • $ orderColumn是您要用于sroting的列名(可能是Product_ID)
  • $ firstRowNo number
  • $ rowsCount你想要多少行。

示例:将加载前3个产品的查询:

SELECT *
FROM myTable
ORDER BY Product_ID
LIMIT 0, 3;

示例:将首先加载5,6,7,8,9和第10个产品的查询:

SELECT *
FROM myTable
ORDER BY Product_ID
LIMIT 5, 5;

当您使用limit时总是按所选列排序行,它将帮助您确定字段的排序方式,并且顺序将始终相同,即使您更改数据库引擎也是如此。