我有两张 table 。假设一个有操作列表(我处理的原始表有发送和接收的消息列表),另一个是用户表,其中包含用户的全名。我已经复制了我现在所拥有的问题。
在操作表(消息表)中找到的用户可能不存在于用户表中。我正在使用子查询根据操作表的原始查询中的用户名选择用户的全名。当 actions 表中的用户不存在于 users 表中时,MySQL 返回一个 NULL,这是预期的。但相反,我希望它返回原始用户名。
比如说,praveen 既存在于用户表中,也存在于操作表中。所以,我得到这样的信息:Praveen Kumar likes something.。比如说,我有另一个用户名 bluff,它不在 users 表中,操作变成这样:NULL shares something.。这里不是 NULL,是否可以返回用户名本身,比如 bluff shares something.?
我的 SQL Fiddle 、架构详细信息和其他引用已在此处提供。如果我能以更好的方式做到这一点,请告诉我。谢谢。
MySQL 5.5.30 架构设置
CREATE TABLE `users`
(`username` varchar(15), `fullname` varchar(15))
;
INSERT INTO `users`
(`username`, `fullname`)
VALUES
('praveen', 'Praveen Kumar'),
('jeff', 'Jeff Atwood')
;
CREATE TABLE `actions`
(`user` varchar(7), `action` varchar(7))
;
INSERT INTO `actions`
(`user`, `action`)
VALUES
('praveen', 'Like'),
('jeff', 'Comment'),
('praveen', 'Answer'),
('praveen', 'Share'),
('jeff', 'Comment'),
('bluff', 'Share'),
('jeff', 'Like')
;
查询
SELECT *, (
SELECT `fullname` FROM `users` WHERE `user` = `username`
) AS `name` FROM `actions`
+---------+---------+---------------+
| USER | ACTION | NAME |
+---------+---------+---------------+
| praveen | Like | Praveen Kumar |
| jeff | Comment | Jeff Atwood |
| praveen | Answer | Praveen Kumar |
| praveen | Share | Praveen Kumar |
| jeff | Comment | Jeff Atwood |
| bluff | Share | (null) |
| jeff | Like | Jeff Atwood |
+---------+---------+---------------+
预期输出
+---------+---------+---------------+
| USER | ACTION | NAME |
+---------+---------+---------------+
| praveen | Like | Praveen Kumar |
| jeff | Comment | Jeff Atwood |
| praveen | Answer | Praveen Kumar |
| praveen | Share | Praveen Kumar |
| jeff | Comment | Jeff Atwood |
| bluff | Share | bluff |
| jeff | Like | Jeff Atwood |
+---------+---------+---------------+
最佳答案
使用IFNULL
SELECT *, IFNULL((
SELECT `fullname` FROM `users` WHERE `user` = `username`
),`user`) AS `name` FROM `actions`
编辑:
COALESCE 也做同样的事情
SELECT *, COALESCE((
SELECT `fullname` FROM `users` WHERE `user` = `username`
),`user`) AS `name` FROM `actions`
关于mysql - 在子查询中处理 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16191641/
我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
我在破坏脚本的字符串中出现了一些奇怪的字符。据我所知,通过putbadstring到控制台,它们是"\0\0\0\0"。我想对此进行测试,以便我可以忽略它们...但是如何呢?以为这就是blank?和empty?的用途?!?:>badstring="\0"=>"\u0000">badstring.blank?NoMethodError:undefinedmethod`blank?'for"\u0000":Stringfrom(irb):97from/Users/meltemi/.rvm/rubies/ruby-2.0.0-p195/bin/irb:16:in`'>badstring.em
我正在尝试查询我的Rails数据库(Postgres)中的购买表,我想查询时间范围。例如,我想知道在所有日期的下午2点到3点之间进行了多少次购买。此表中有一个created_at列,但我不知道如何在不搜索特定日期的情况下完成此操作。我试过:Purchases.where("created_atBETWEEN?and?",Time.now-1.hour,Time.now)但这最终只会搜索今天与那些时间的日期。 最佳答案 您需要使用PostgreSQL'sdate_part/extractfunction从created_at中提取小时
我对图像处理完全陌生。我对JPEG内部是什么以及它是如何工作一无所知。我想知道,是否可以在某处找到执行以下简单操作的ruby代码:打开jpeg文件。遍历每个像素并将其颜色设置为fx绿色。将结果写入另一个文件。我对如何使用ruby-vips库实现这一点特别感兴趣https://github.com/ender672/ruby-vips我的目标-学习如何使用ruby-vips执行基本的图像处理操作(Gamma校正、亮度、色调……)任何指向比“helloworld”更复杂的工作示例的链接——比如ruby-vips的github页面上的链接,我们将不胜感激!如果有ruby-
我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin
我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d
我在Rails上使用带有ruby的solr。一切正常,我只需要知道是否有任何现有代码来清理用户输入,比如以?开头的查询。或* 最佳答案 我不知道执行此操作的任何代码,但理论上可以通过查看parsingcodeinLucene来完成并搜索thrownewParseException(只有16个匹配!)。在实践中,我认为您最好只捕获代码中的任何solr异常并显示“无效查询”消息或类似信息。编辑:这里有几个“sanitizer”:http://pivotallabs.com/users/zach/blog/articles/937-s