【问题标题】:MySQL Select All Rows After 1st Row With Matching ValueMySQL选择具有匹配值的第一行之后的所有行
【发布时间】:2016-11-03 03:02:28
【问题描述】:

有没有办法选择第一行之后的所有行并匹配值?

我试过了:
SELECT * FROM Table WHERE Ate=False ORDER BY Ate ASC LIMIT 1
SELECT * FROM Table WHERE Id>=1stqueryid, Fruit=Blueberry

例如,我有一张桌子,上面有一列水果和一个布尔值,表示它们是否被吃掉。

ID---水果-------------- 吃了
1---蓝莓------真
2---橙色---------真
3---蓝莓-----假
4---桃子------------真
5---蓝莓-----真
6---蓝莓------错误
7---蓝莓-----正确

我想找到“Ate”=“False”和“Fruit”=“Blueberry”的第一行。然后,选择具有“Blueberry”的剩余行。
结果应该是:

ID---水果---------------吃
3---蓝莓--------假
5---蓝莓--------真
6---蓝莓--------假
7---蓝莓--------真

有没有办法合并这两个查询?

【问题讨论】:

  • 你的表中没有主键吗?
  • 也许你可以试试 UNION dev.mysql.com/doc/refman/5.7/en/union.html
  • 感谢您的浏览。抱歉,我添加了 ID 列。实际的表名是“Messages”,表结构是“_id INTEGER, address TEXT, date STRING, body STRING”,我试图在某个日期之后获取与地址匹配的所有消息。

标签: mysql


【解决方案1】:

你可以只使用子查询来获取第一个满足条件的id

fruit = 'Blueberry' AND ate = false 

子查询如下所示

id >= (SELECT id 
              FROM   Table 
              WHERE  fruit = 'Blueberry' 
                     AND ate = false 
              LIMIT  1) 

这个子查询返回满足条件的行的第一个id

fruit = 'Blueberry' AND ate = false 

最终查询如下所示

SELECT * 
FROM   Table 
WHERE  id >= (SELECT id 
              FROM   Table 
              WHERE  fruit = 'Blueberry' 
                     AND ate = false 
              LIMIT  1) 
       AND fruit = 'Blueberry' 

See Screen Shot

【讨论】:

  • 你每天都会学到新东西。 1. SQL 子查询 2. 我是个白痴 :( 谢谢你的帮助!
  • @pjd 'id ' 有什么作用?
  • @pjd 伙计的问题状态是他只想要在第一个 fruit = 'Blueberry' AND ate = false 匹配记录时开始的记录,所以显然它是 >=(等于或大于)注意结果是 3, 5,6,7
【解决方案2】:
SELECT * FROM Table WHERE Fruit='Blueberry' ORDER BY Ate ASC 

此查询应该满足您的要求。

【讨论】:

  • 不完全是。此查询选择所有 Blueberry 行。感谢您的观看!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-01
  • 1970-01-01
  • 2011-05-01
  • 2011-07-04
  • 2021-07-23
相关资源
最近更新 更多