首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >相同的MySQL查询,但不同的输出-为什么?

相同的MySQL查询,但不同的输出-为什么?
EN

Stack Overflow用户
提问于 2012-07-11 04:37:09
回答 2查看 169关注 0票数 0

我在书中使用了相同的查询。那么,为什么我的输出与书中的输出有很大的不同呢?这本书还说:“\都不会导致字母数字值的级联,但是它被看作是一个OR操作符来组合谓词。“组合谓词的OR运算符”是什么意思?

  • 数据库:网球
  • 表:播放机
  • 专栏:剧作家(Pk),城镇,街道,千人...etc。
  • 问题:获取每个住在斯特拉特福的玩家的号码和地址。
  • 查询: 从“城镇”=“斯特拉特福”的玩家中选择“游戏玩家”、“城镇”、“”城市“、”城市“、”街“、”“、”千人“;
  • 书的结果: 斯特拉特福斯泰尼路43号斯特拉特福哈塞尔廷街80号

......etc

  • 我的结果(使用相同的查询): 2 1 6 1 7 1 39 1 57 1 83 1 100
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-11 04:48:33

在MySQL中,必须使用CONCAT()将列的值以一个字符串的形式组合在一起:

代码语言:javascript
运行
复制
SELECT playerno, CONCAT(town, ' ', street, ' ', houseno)
FROM   players 
WHERE  town = 'stratford';

您的书中可能提到了甲骨文级联语法,它使用||连接字符串。默认情况下,MySQL将||视为两个或多个条件之间的OR操作符,如果它们中的任何一个计算为"true“,则返回1

但是,正如satdev86的答案所指出的,只有在执行查询之前手动设置模式MySQL时,||才允许使用||作为连接操作符。

编辑:

在您的书中,它清楚地说明了必须设置MySQL sql_mode才能使示例工作。它在SQL示例之前的页面上:

http://books.google.com/books?id=c5G42OHT96cC&pg=PT160&lpg=PT160&dq=%22This+specification+is+needed+for+the+following+examples.+It+applies+only+to+the+current+session.%22&source=bl&ots=6b6zeFbM-2&sig=3a54S4vbgmKbPBqVbbR8OdxLLI8&hl=en&sa=X&ei=Nwz9T6fKAcfI2gWZhfDTBg&ved=0CCEQ6AEwAA

票数 0
EN

Stack Overflow用户

发布于 2012-07-11 04:54:21

因为,正如书中所述,如果它们使用了sql模式PIPES_AS_CONCAT,那么您的管道将充当连接运算符。

代码语言:javascript
运行
复制
SET sql_mode='PIPES_AS_CONCAT';
select playerno, town || '' || street || '' || houseno
from players 
where town = 'stratford';

将给出您在书中看到的输出:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11425637

复制
相关文章

相似问题

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