我会尽力澄清这一点。
我需要在不使用 id 的情况下选择特定行和该选定行的前一个相对行以及该选定行的下一个相对行。这可能吗?简而言之,上一篇和下一篇。
我不能(也许我只是不知道如何)使用 id 的原因是因为它们不是按顺序排列的。正如您从这个相当不成熟和随机的示例中看到的那样,它们存在差距。
TABLE <-the name of the table
+----+----------------------+-------+
| id | name | value |
+----+----------------------+-------+
| 1 | some_name | asf |
+----+----------------------+-------+
| 4 | hello | A3r |
+----+----------------------+-------+
| 5 | how_do_you_do | HR5 |
+----+----------------------+-------+
| 8 | not_bad | 00D |
+----+----------------------+-------+
| 12 | i_like_women | lla |
+----+----------------------+-------+
| 13 | are_you_serious | 1Ha |
+----+----------------------+-------+
| 15 | nah_i_kid | Ad4 |
+----+----------------------+-------+
| 17 | it_is_just_the_boobs | Zc5 |
+----+----------------------+-------+
| 18 | thank_god | 102 |
+----+----------------------+-------+
| 44 | no_kidding | jjy |
+----+----------------------+-------+
首先,我需要根据某一列中的特定值选择一行。我知道该怎么做:
SELECT `value`
FROM `TABLE`
WHERE name = 'i_like_women'
这将选择 id 为 12、值为 lla 的一行。
我需要的是选择另外至少两行:一行的名称为“not_bad”,另一行的名称为“are_you_serious”,但未指定。或者,换句话说,相对于所选的上一个和下一个。
简而言之,应该根据一个值选择三行。你可以猜到,我是 MySQL 的新手。
感谢您的时间和关注。享受帮助我。
这是将返回所有三个记录的查询。
SELECT *
FROM `TABLE`
WHERE id >= (
SELECT id
FROM `TABLE`
WHERE id < (SELECT id FROM `TABLE` WHERE name = 'i_like_women')
ORDER BY id DESC
LIMIT 1
)
ORDER BY id ASC
LIMIT 3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)