首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用NOT和UNION语句构建MyBatis查询

使用NOT和UNION语句构建MyBatis查询
EN

Stack Overflow用户
提问于 2014-04-06 08:31:54
回答 2查看 5.3K关注 0票数 1

我是MyBatis的新手,我使用的是3.2.3版本。我需要在MySql中使用UNION而不是IN,下面是查询,它可以很好地处理Sequal。

代码语言:javascript
运行
复制
SELECT DISTINCT * FROM room WHERE roomNo NOT IN (
    SELECT roomNo FROM reservation WHERE resvStatus='DONE' AND checkout > "2014-04-27" AND checkout <= "2014-04-29"
    UNION
    SELECT roomNo FROM reservation WHERE resvStatus='DONE' AND checkin >= "2014-04-27" AND checkin < "2014-04-29"
    UNION
    SELECT roomNo FROM reservation WHERE resvStatus='DONE' AND checkin < "2014-04-27" AND checkout > "2014-04-29"
)

如果我把这个查询放在MyBatis XML文件中,那么它就会显示语法错误。

代码语言:javascript
运行
复制
<select id="roomSearch" parameterType="map" resultType="Room">
SELECT DISTINCT * FROM room WHERE roomNo NOT IN (
    SELECT roomNo FROM reservation WHERE resvStatus='DONE' AND checkout > #{checkIn} AND checkout <= #{checkOut}
    UNION
    SELECT roomNo FROM reservation WHERE resvStatus='DONE' AND checkin >= #{checkIn} AND checkin < #{checkOut}
    UNION
    SELECT roomNo FROM reservation WHERE resvStatus='DONE' AND checkin < #{checkIn} AND checkout > #{checkOut}
)
</select>

我可以在MyBatis中像这样使用UNION吗?我在网上搜索,但找不到确切的答案。也许我需要更改我的查询以获得使用MyBatis的结果。请给我一些建议。谢谢!

EN

Stack Overflow用户

回答已采纳

发布于 2014-04-07 08:04:55

当我在网上搜索几个小时时,我找到了答案。基本上,您不能使用<。相反,您应该使用字符之间没有空格的&l;,就像HTML代码一样。下面是我刚刚测试的工作代码。

代码语言:javascript
运行
复制
<select id="searchRoom" parameterType="map" resultType="Room">
    SELECT DISTINCT * FROM room WHERE roomNo NOT IN (
        SELECT roomNo FROM reservation WHERE resvStatus="DONE" AND checkout > #{checkIn} AND checkout &lt;= #{checkOut}  
        UNION 
        SELECT roomNo FROM reservation WHERE resvStatus="DONE" AND checkin >= #{checkIn} AND checkin &lt; #{checkOut} 
        UNION 
        SELECT roomNo FROM reservation WHERE resvStatus="DONE" AND checkin &lt; #{checkIn} AND checkout > #{checkOut}
    )
</select>

我原以为工会行不通,但我错了。你可以用联合公司。

而且,我尝试过使用<![CDATA[ ......... ]]>,但它没有起作用。我的Tomcat服务器说XML文件中有一个错误。我不确定它是否适用于其他案件。

因此,使用<将是最简单的方法。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22891680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档