我想做的是选择 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) 从表 按类名分组
假设我有
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()和能够得到id的Bar是与相关的foo,但它似乎并没有这样的.
PS:我所指的文档部分可以在这里找到:
它说:
"应用程序可以显式地db.get()ReferenceProperty(它是一个Key)的值来测试引用的实体是否存在."
在我看来,一个连续运行的Web应用程序; 因此,我对谈论PHP脚本(例如这个)的"结束"的文档页面感到困惑.这样的引用似乎是指每个Web请求的结束,但是如果脚本在那里结束,那是不是意味着操作系统必须为每个请求设置一个全新的进程?这似乎不太可能,因为启动一个全新的流程是昂贵的,并且整个站点的效率非常低.
有效的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) 据我所知,如果你确实产生后跟链接,那么这个过程可能已经在同一时间内死亡.为什么这是一个问题?无法链接看到你试图链接到已经死亡的进程?在那种情况下,它不能只是表现为远程进程在链接被调用后立即死亡?
我认为如果你可以单独生成和链接,而不必在一个原子函数中一起完成它们会很好,因为a)会使语言更正交(spawn_link与spawn和链接重叠)b)如果我有一个start函数,它基本上只是spawn的包装器,我还需要提供start_link.所以非正交性是病毒式的.呸!
在其他编程语言(Python,Ruby,Scheme)中,我习惯于做类似的事情
$foo = $cat && $dog;
$bar = $fruit || $vegetable;
Run Code Online (Sandbox Code Playgroud)
如果$ cat为null,我会期望$ foo被分配给$ dog,如果$ fruit为null,则$ bar将被分配给$ fruit.我似乎记得因为在PHP中做这样的事情而被烧毁,而且我从未弄清楚逻辑运算符如何处理非布尔操作数.有人可以解释或指出我正确的方向吗?我尝试在官方文档中阅读以下页面,但它不涉及非布尔值: