我的数据库中有以下表格,现在我想获取从一个产品值开始到下一个产品值的所有记录。我的意思是从一个“产品”开始到下一个产品值的所有记录。 更新:
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查询中完成。
答案 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
其中
示例:将加载前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时总是按所选列排序行,它将帮助您确定字段的排序方式,并且顺序将始终相同,即使您更改数据库引擎也是如此。