我想要做的是SUM一列,但也要COUNT它总和的行数,限制不超过5行.所以我的查询是:
SELECT COUNT(*), SUM(score) FROM answers WHERE user=1 LIMIT 5
Run Code Online (Sandbox Code Playgroud)
我所期待的是COUNT(*)高达5(我不能假设它在我的代码逻辑中总是5,因为它可能少于5个答案),最多 5行的得分总和.
相反,我似乎得到的是匹配行的总数(用户为1)作为计数,以及这些行的得分总和.这些数字不会改变我是否把LIMIT 1
或者LIMIT 5
甚至是LIMIT 50
.
相信在这种情况下我认为会起作用
SELECT COUNT(*), SUM(score) FROM (SELECT * FROM answers WHERE user=1 LIMIT 5) AS a
Run Code Online (Sandbox Code Playgroud)
但对于这样一个简单的查询来说,这似乎有点令人费解,而且在高流量脚本中,我希望它尽可能高效.
我错过了什么吗?几年前我确实发现了这个错误报告似乎与这个"问题"有关,但我认为它实际上并不是一个错误?
我想这更像是一个"询问信息"的帖子,而不是"为我修复此帖子".我已经做了一些研究,但我对facebook开放图是什么感到困惑.
为了给出一点背景知识,基本上我想将用户操作发布到用户的Facebook墙上(假设他们是通过Facebook登录的).我本来打算以与Twitter相同的方式做到这一点.也就是说,我只是要求写入权限,并使用他们的帐户访问令牌向用户自己的墙发布内容.
然而,我遇到了这个图形API,这似乎是一个更好的方法来做到这一点,它允许它看起来比一些墙贴更加漂亮.所以我终于阅读并理解了足以设置我的开放图形动作和对象.与meta标签一起战斗,因为我不明白它们是如何工作的,最后得到了图形的调试工具,以返回一组关于动作所采取的"对象"的一组很好的信息.
所以我去运行代码测试,没有任何东西出现在我的墙上或我能看到的任何地方.在一些var_dump()之后,我看到从api调用中返回了大量信息.看起来它似乎返回了多个具有不同id的相同信息的集合,但是我的工作就像我获取有关我的"对象"的信息并且看不到任何看起来像错误的东西.
所以在那之后我又读了一些,我想我发现开放图是没用的,除非用户已经激活了这个时间轴的东西,它应该在几个星期后公开发布.
如果有人能回答它们,那么有几个问题:
除非人们使用这个时间轴的东西,否则这些图形api调用是无用的.如果是的话,除了直接发布到墙上之外还有其他方法可以做我想做的事情.此外,如果是,是否有办法检查用户是否有时间线活动(如果不是,则作为提供后备的一种方式)
在某些时候,这个时间表将适用于每个人并接管一些东西.
PS:如果你没有聚集,我不是一个大的Facebook用户,所以请原谅使用像"东西"这样的词和我说的其他东西看起来很奇怪:)
感谢任何可以提供此信息的人
一般来说,我希望尽可能保持数据库的清洁和可扩展性.
然而,经过一些测试后,我意识到虽然这通常是最好的方法,但在处理大型数据集时,它比我所说的"脏"方法慢得多.
基本上可以说我有一个对象表.这些物品属于某些人.一个对象可能有一个人,而其他对象超过1.我最初的想法就像我一直做的那样,为我的对象创建一个对象表,为我的人创建一个人员表,然后是一个object_to_people链接表.
但是,为了获取一个人被分配到的所有对象,加入对象和链接器表可能需要3秒钟(这基于大约400k记录,但每个对象只有1个链接).是的我还设置索引等试图加快速度.
如果我改为删除人员和链接器表,并将对象表中的人员作为列,并使用1/0设置是否将每个人分配给该对象,而不加入两个大表,我看到的速度约为0.3 - > 0.7秒(变化很大).
首先,我们只需要2个人.但如果我能帮助它,我不想过于严格.我知道我可以使用缓存以及什么不能改善最终用户的时间,但是有什么理由认为使用列而不是链接表是一个非常糟糕的主意吗?
我被要求为PHP API支持的APP启用表情符号支持.APP目前只有iPhone(我没有,但我假设它上面有Emoji?).
无论如何,我注意到数据库由于某种原因使用latin_swedish无处不在.但由于我不确定utf-8是否可以支持完整的表情符号范围所需的4字节字符串,所以我开始谷歌搜索,但无法从结果中得到完整答案.
所以:
要支持表情符号,请将charset/collation的需要设置为mysql中的utf-8,或utf-8 mb4?
如果charset需要设置为utf8mb4,utf8和utf8mb4之间的区别是什么(utf8最多支持4个字节不管怎么样?).它是否强制字符以固定宽度存储在4字节表示中(假设每个聊天节点需要多4倍的存储空间,即使在通常为1字节的标准ascii范围内).
可以在mysql查询中将utf8与utf8mb4进行比较吗?如果我尝试对另一个表的utf8列进行全文搜索或utf8mb4字符集的where子句怎么办?
PHP是否支持4byte字符串而不必使用像mb_string这样的特殊库?即我可以只是分配$var = $_POST['text']
和做类似的事情,$emoji_var == 'xxxx'
或者我必须在字面上改变PHP中的所有字符串以使用mbstring并更改所有比较器等
只是想弄清楚在表情符号支持方面需要做多少工作,以及这样做的任何警告.所以任何帮助都会很棒.
这可能是不可能的,但我想我会四处询问,看看我是否错过了什么.我正在寻找的是一种使用需要文件指针处理的函数而不需要编写实际文件的方法.
我知道我可以使用临时文件,执行操作然后将文件读回输出缓冲区并删除文件.但是,这意味着从写入磁盘然后从磁盘读取的延迟.如果我可以做类似的事情,那么在我的情况下速度和资源会好得多
$tmp = createFakeFile();
fputscsv($tmp, array(/*** an array of csv fields ***/));
echo $tmp;
Run Code Online (Sandbox Code Playgroud)
我怀疑这是否存在,但如果你曾经听说过做这样的事情,我很乐意听到它
谢谢
我正在尝试创建一个简单的c#应用程序(我第一次尝试c#所以请善待).我创建了一个带有文本框的表单来捕获"身份验证代码",然后对其进行验证,然后webclient获取将此身份验证代码传递给请求的xml文件.发回的数据被解析等
我想要做的是,一旦xml回来,我已经完成了我的检查有效它一切都很好.我想关闭第一个表单并加载第二个表单,我将以编程方式添加以漂亮格式显示xml数据所需的表单组件.
我的问题是我无法让第二种形式保持开放(毫无疑问,以错误的方式调用第二种形式).这就是我所拥有的:
// close current form
this.Close();
//open new form
xmlViewForm xmlView = new xmlViewForm();
xmlView.Show();
Run Code Online (Sandbox Code Playgroud)
我相信你现在已经发现了我犯的错误.但只是为了完整性而陈述明显,它关闭第一个表格,打开第二个表格,然后立即退出程序(第二个表格显然闪烁了一秒钟).
我已经尝试了一些但没有一个工作(包括使用Application.Run(new xmlViewForm());
而不是实例化类和使用show()
方法.显然你知道这不起作用,现在我也这样做,虽然我不理解c#甚至远程工作为什么.
谢谢你的帮助 :)