我试图从mysql数据库中选择一系列数据,这是我的数据库结构。
我试图选择这样的东西:Geneses(圣经的书1)和第1章至第3章21节(创世记1-3:23)。我已经正确解析了所有数据,但是,我似乎无法创建一个足够的SQL查询。
以下是我目前的语法,它仅从第1-3章中选择其中经文数字为< = 21.我需要它仅在到达最后一章时使用verse参数,而不应用{{1}到1到3之间的每一章。
verse <= 21
我将sql语句放入两个语句中,以便更清楚地了解我要完成的任务。我只想弄清楚如何(如果可能的话)结合这两个语句并仍然有相同的响应。现在我只查询两次然后合并结果。
SELECT `book`, `chapter`, `verse`, `text`
from `bible`
WHERE version = 'kjv'
AND book = 1
AND chapter >= 1
AND ( chapter <= 3 AND verse <= 21 )
答案 0 :(得分:2)
SELECT `book`, `chapter`, `verse`, `text`
from `bible`
WHERE version = 'kjv'
AND book = 1
AND
(
chapter in (1,2)
OR (chapter = 3 AND verse <= 21)
)
答案 1 :(得分:-1)
我不完全确定这是否是你的意思,但希望如此:
select distinct
`book`, `chapter`, `verse`, `text`
from `bible`
where (
case
when `chapter` < ( select max( `chapter` ) from `bible` where `book`=1 ) then
`version`='kjv' and `book`=1 and `chapter` in ( 1,2,3 )
else
`version`='kjv' and `book`=1 and `chapter` in ( 1,2,3 ) and `verse` <= 21
end
);