0

我的表(以“AA”开头的行仅包含公司代码和名称。第一个喜欢下面的接下来的 4 行包含该公司的详细信息,之后 4 行再次包含公司名称的行......等等)

id  col1           col2                      col4 | col5 | col6  | col7 | col8
 1  AAV987        Alcatop Pvt                     |      |       |      |
 2  126B          Burger                       10 |  --  |  15   |  20  |   56 
 3  957A          Pizza                        17 |  19  |  44   |  29  |   97
 4  45A5          Mushroom                     59 |  22  |  15   |  --  |   --
 5  8999          Fish                         27 |  39  |  --   |  20  |   20  
 1  AA5697        Nomendus Curies
 2  126B          Burger                       42 |  26  |  25   |  29  |   60 
 3  957A          Pizza                        65 |  65  |  90   |  29  |    9
 4  45A5          Mushroom                     15 |  97  |  --   |  64  |   65
 5  8999          Fish                          7 |  19  |  15   |  --  |   20   

我需要这个

我需要一个可以帮助我这样做的查询

如果搜索词是“AA5697”那么它应该让我得到如下数据

id  col1           col2                      col4 | col5 | col6  | col7 | col8
 1  AA5697        Nomendus Curies
 2  126B          Burger                       42 |  26  |  25   |  29  |   60 
 3  957A          Pizza                        65 |  65  |  90   |  29  |    9
 4  45A5          Mushroom                     15 |  97  |  --   |  64  |   65
 5  8999          Fish                          7 |  19  |  15   |  --  |   20  

类似问题1:Mysql Select Next & Prev row not order by id

类似问题2:sql为当前行的下一行或上一行拉一行

我看着他们。但这让我感到困惑,第一个链接中的查询并不完美:(

4

2 回答 2

1

如果提供的列是所有列,则无法正确解决此问题。在关系数据库中,表是一组无序的行。当然,硬盘上是有物理顺序的,但从逻辑上你不能假设它们有任何顺序。没有“下一个”行。

您可以尝试通过各种查询、更改表等来解决这个问题......您可能很幸运,但没有可证明的工作解决方案。

这是一个糟糕的数据库模型。甚至没有证据证明这些值是正确的。请为您发送此文件的人发送一个真实的数据库。公司和数据行之间的父子连接将使这个问题变得更容易。

但是:如果存在整数递增的隐藏 ID 字段(在示例代码中没有),您可以使用它来定义查询中的顺序。这样,您可以通过检查价值记录的 ID 与所选公司 ID 的距离来轻松解决问题。

注意:没有证据表明如果没有,您可以添加正确的 ID 列。如果有,而不是查询,您应该使用它来定义其他 2 个表并用数据填充它们。

编辑:

不接受答案并编辑帖子不是一个好习惯。您提供了 2 个链接。在第一个中,记录按名称排序,在第二个中,它们按日期排序。

您的新 ID 字段几乎没有问题,但如果您有N记录,ID 应该从 1 到N.

于 2013-06-10T10:11:00.400 回答
0
  1. 请把你的问题说清楚一点。(这个例子令人困惑。)
  2. 从我收集到的应该是
    SELECT col1, col2, col3, col4, col5, col6, col7, col8 from MY_TABLE LIMIT 7 ORDER BY col1;
于 2013-06-10T09:36:12.657 回答