CREATE TABLE `test` (
`field1` int(11) NOT NULL,
`field2` int(11) DEFAULT NULL,
`field3` int(11) DEFAULT NULL,
UNIQUE KEY `field1_2` (`field1`,`field2`),
UNIQUE KEY `field1_3` (`field1`,`field3`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
到目前为止,我已经使用了三个与UNION连接的查询
SELECT * FROM test WHERE field2 IS NULL
AND field3 IS NULL UNION
SELECT * FROM test WHERE field2 IS NULL
AND field3 IS NOT NULL UNION
SELECT * FROM test WHERE field2 IS NOT NULL
AND field3 IS NULL;
我自己觉得这是很多必要的代码来得到它的秩序,并希望有一个更好的解决方案。
那么有没有更好的办法呢?
只需将条件按顺序
:
order by (field2 is null and field3 is null) desc,
(field2 is null and field3 is not null) desc,
(field2 is null and field3 is not null) desc
您可能需要添加,其中
:
where field2 is null or field3 is null
这是因为MySQL将布尔值视为数字上下文中的数字,“true”为1,“false”为0。这就是为什么需要desc
。在标准SQL中,您可以将相同的内容表示为:
order by (case when field2 is null and field3 is null then 1
when field2 is null and field3 is not null then 2
when field2 is not null and field3 is null then 3
else 4
end)
很抱歉打扰你,但我无法找到一个有效的解决我的问题的方法。我想做一个MongoDB查询,让我得到与SQL查询相同的结果:
我正在使用java servlet编写一个简单的服务器。为了从数据库中获取数据,我编写了一个特殊的Dao层类,我想知道我应该在哪里存储SQL查询? 我需要创建一个特殊的类,将查询存储为最终字符串,还是有更有效的方法来实现?
问题内容: 我试图通过C#中的代码找到最佳的(快速与最简单)访问SQL Server代码的方法。 当我从书本上学习时,我遇到了很多建议,通常都建议我通过拖放来完成。但是,由于我想在代码中做到这一点,所以第一种方法是按列号获取数据,但是SQL Query中的任何重新排序(如添加/删除列)都让我难以解决。 例如(别笑,有些代码大约有2年历史了),我什至编写了特殊的函数来传递sqlQueryResult
问题内容: 在SQL查询中将int或null转换为布尔值的最佳方法是什么,例如: 任何非空值为 TRUE 的结果 任何空值是 假 的结果 问题答案: 据我所知(如果我错了,请纠正我),SQL中没有文字布尔值的概念。您可以使表达式的计算结果为布尔值,但不能输出它们。 就是说,您可以使用CASE WHEN来产生可以在比较中使用的值:
问题内容: 在调用对象的函数之前,我需要检查对象是否为null,以避免引发。 最好的方法是什么?我考虑过这些方法。 哪一种是Java最佳编程实践? 问题答案: 方法4是最好的。 将使用短路评估,这意味着如果a的第一个条件为假,则评估结束。
尝试使用CompletionSuggester for autocomplete特性,通过Java的RestHighLevelClient实现CompletionSuggester有不同的方法,想知道以下这些方法之间(在性能/查询执行速度方面)有什么区别吗 1:使用CompletionSuggestionBuilder: 2:使用SimpleQueryString