【问题标题】:mysql query help?mysql查询帮助?
【发布时间】:2009-08-09 08:12:07
【问题描述】:

我有一张桌子
'id' 作为主要字段并设置为自动递增..
'name' 类型为 varchar ..
'category' 类型为 varchar ..

表格内容 ::.
* id=1,name=abc,category=tv
* id=2,name=abc,category=radio
* id=3,name=abc,category=tv
* id=4,name=abc,category=radio
* id=5,name=abc,category=tv
* id=6,name=abc,category=tv


现在,我想选择 category="tv" 的最新行,即仅第 5 行、第 6 行
这只是一个示例,实际表格可能有很多类别,我希望我在提出问题的方式上很清楚......
请帮忙....

根据给出的答案...这个查询显示了我想要的结果 ::.

SELECT * FROM test WHERE id > (SELECT id FROM test WHERE category !="tv" ORDER BY id DESC LIMIT 1)

但是当我在表中再添加 1 行时,查询没有显示任何结果,我可以理解为什么..
$$$$我想要特定类别的最后一个块 $$ $$

【问题讨论】:

  • 如果您添加一个不是“tv”的新行,它应该什么都不返回。这就是逻辑。
  • 很抱歉,我无法在第一次正确解释它。可能有许多特定类别的块,我想要最后一个块,即如果
    * id=1, name=abc,category=tv
    * id=2,name=abc,category=radio
    * id=3,name=abc,category=tv
    * id=4,name=abc,category =radio
    * id=5,name=abc,category=tv
    * id=6,name=abc,category=tv
    * id=7,name=abc,category=radio
    只有当我请求 category='tv' 时,我才想要第 5 行和第 6 行

标签: database mysql


【解决方案1】:

我想这就是你需要的。

SELECT * FROM table
    WHERE id >
        (SELECT id FROM table
            WHERE category !=
                (SELECT category FROM table
                    ORDER BY id DESC LIMIT 1)
            ORDER BY id DESC LIMIT 1);

最里面的 SELECT 是查找最后一个类别块的类别。中间选择是查找与该类别不同的​​最后一行的 ID。然后外部选择是选择该 id 之后的所有行。因此,它将找到属于最终类别块的所有行。

编辑:

SELECT * FROM table
    WHERE category = 'radio' && id >
        (SELECT id FROM table
            WHERE category != 'radio' && id <
                (SELECT id FROM table WHERE category = 'radio' ORDER BY id DESC LIMIT 1)
            ORDER BY id DESC LIMIT 1)

我认为这应该可以满足您的需求。请注意,您需要将 3 个位置放入您要查找的类别中(在此示例中,它正在查找“收音机”)。

【讨论】:

  • 我要选择 category ='tv' 的最终块或已添加到数据库中的特定类别
  • 您是指特定类别而不是最后一个类别?
  • 是的!!!!可能有许多特定类别的块,我想要最后一个块,即 if
    * id=1,name=abc,category=tv
    * id=2,name=abc,category=radio
    * id=3,name=abc,category=tv
    * id=4,name=abc,category=radio
    * id=5,name=abc,category=tv
    * id=6, name=abc,category=tv
    * id=7,name=abc,category=radio
    只有当我请求 category='tv' 时,我才需要第 5 行和第 6 行
  • 好的。我添加了一个我认为可能是您需要的编辑版本。
  • 非常感谢......正是我需要的......感谢您抽出时间提供帮助......
猜你喜欢
  • 2011-11-07
  • 2011-07-19
  • 2011-04-28
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多