小编all*_*ode的帖子

在 SQL 中选择多个字段的最大值的最佳方法是什么?

我想做的是选择 max(f1, f2, f3)。我知道这行不通,但我认为我想要的应该很清楚(请参阅更新 1)。

我正在考虑执行 select max(concat(f1, '--', f2 ...)) ,但这有各种缺点。特别是,执行 concat 可能会减慢速度。获得我想要的东西的最佳方式是什么?

更新1:到目前为止我得到的答案并不是我想要的。max 处理一组记录,但它仅使用一个值来比较它们;我希望 max 考虑多个值,就像 order by 可以考虑多个值一样。

更新2:假设我有下表:

id 类名 order_by1 order_by_2
 1 个 0 0
 2 个 0 1
 3b 1 0
 4b 0 9

我想要一个按类名对记录进行分组的查询。order_by1然后,在每个“类”中,选择先升序排列的记录order_by2。结果集将包含记录 2 和 3。在我神奇的查询语言中,它看起来像这样:

选择 max(* order by order_by1 ASC, order_by2 ASC)
从表
按类名分组

sql

2
推荐指数
1
解决办法
5万
查看次数

您如何在Google App Engine中自动取消引用db.ReferenceProperty?

假设我有

class Foo(db.Model):

  bar = db.ReferenceProperty(Bar)

foo = Foo.all().get()
Run Code Online (Sandbox Code Playgroud)

有没有办法让我在没有查询数据存储的情况下执行foo.bar?该文档说foo.bar会的一个实例Key,所以我希望能够做的foo.bar.id()和能够得到idBar是与相关的foo,但它似乎并没有这样的.

PS:我所指的文档部分可以在这里找到:

http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#ReferenceProperty

它说:

"应用程序可以显式地db.get()ReferenceProperty(它是一个Key)的值来测试引用的实体是否存在."

python google-app-engine google-cloud-datastore

2
推荐指数
1
解决办法
464
查看次数

PHP脚本什么时候结束?

在我看来,一个连续运行的Web应用程序; 因此,我对谈论PHP脚本(例如这个)的"结束"的文档页面感到困惑.这样的引用似乎是指每个Web请求的结束,但是如果脚本在那里结束,那是不是意味着操作系统必须为每个请求设置一个全新的进程?这似乎不太可能,因为启动一个全新的流程是昂贵的,并且整个站点的效率非常低.

php

2
推荐指数
1
解决办法
1083
查看次数

如何选择会员和非会员功能?

有效的C++说"首选非成员非frend函数到成员函数"(第23项).理由对我来说很有意义:它最小化了API"表面积".但在实践中,我经常发现很难说服人们(包括我自己)效仿.例如,假设我有一些形状类,它们应该支持周长和面积计算:

// @interface
class Shape {
 public:
  virtual double Area() = 0;
  virtual double Perimeter() = 0;
}

class Rectangle : public Shape {
 public:
  Rectangle(double width, double height);

  double width();
  double height();

  ...
};

class Circle : public Shape {
 public:
  Circle(double radius);

  double radius();
  ...
};
Run Code Online (Sandbox Code Playgroud)

根据这个建议,似乎Area和Perimeter应该是非成员非朋友函数(不是方法),因为它们可以.例如,Rectangle的区域可以通过宽度和高度方法计算,如下所示:

double Area(const Rectangle& rectangle) {
  return rectangle.width() * rectangle.height();
}
Run Code Online (Sandbox Code Playgroud)

事实上,Rectangle和Circle都没有任何内部状态,它们的吸气剂没有暴露,很难想象会是怎样的.因此,对这些操作的任何函数都不应该是一种方法.另一个例子:

// The diameter of a shape is the (circle) diameter of the smallest circle
// that contains a shape. …
Run Code Online (Sandbox Code Playgroud)

c++

2
推荐指数
1
解决办法
151
查看次数

为什么在Erlang中需要spawn_link?

据我所知,如果你确实产生后跟链接,那么这个过程可能已经在同一时间内死亡.为什么这是一个问题?无法链接看到你试图链接到已经死亡的进程?在那种情况下,它不能只是表现为远程进程在链接被调用后立即死亡?

我认为如果你可以单独生成和链接,而不必在一个原子函数中一起完成它们会很好,因为a)会使语言更正交(spawn_link与spawn和链接重叠)b)如果我有一个start函数,它基本上只是spawn的包装器,我还需要提供start_link.所以非正交性是病毒式的.呸!

erlang

2
推荐指数
1
解决办法
244
查看次数

在PHP中,逻辑运算符如何与非布尔值一起工作?

在其他编程语言(Python,Ruby,Scheme)中,我习惯于做类似的事情

$foo = $cat && $dog;
$bar = $fruit || $vegetable;
Run Code Online (Sandbox Code Playgroud)

如果$ cat为null,我会期望$ foo被分配给$ dog,如果$ fruit为null,则$ bar将被分配给$ fruit.我似乎记得因为在PHP中做这样的事情而被烧毁,而且我从未弄清楚逻辑运算符如何处理非布尔操作数.有人可以解释或指出我正确的方向吗?我尝试在官方文档中阅读以下页面,但它不涉及非布尔值:

http://us3.php.net/manual/en/language.operators.logical.php

php logical-operators

0
推荐指数
1
解决办法
307
查看次数