我想使用以下SQL:
SELECT * FROM Data WHERE tid=1 ORDER BY CASE WHEN round=0 THEN date ELSE round, date END ASC
但由于round, date
位,它无法正常工作。如果我将该位round
设置为{1}},则可以正常工作但两者都没有。
如果round=0
,那么我希望能够先round
对date
进行升序排序,然后round
。这可能吗?
我想要实现的是一个排序的行数组,首先按date
排序,然后round
秒排序。但是,如果round
为零,那么我只希望该行出现在该记录适合的日期之间,即使它的值为var slideIndex = 0;
showSlides();
function showSlides() {
var slides = document.getElementsByClassName("mySlides");
var dots = document.getElementsByClassName("dot");
for (var i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slideIndex++;
if (slideIndex > slides.length) {
slideIndex = 1;
}
for (var i = 0; i < dots.length; i++) {
dots[i].className = dots[i].className.replace(" activeDot", "");
}
slides[slideIndex - 1].style.display = "block";
dots[slideIndex - 1].className += " activeDot";
}
function dotClickHandler(e) {
clearInterval(intervalId);
var activeDotIndex = this.getAttribute("slideDot");
slideIndex = activeDotIndex - 1;
showSlides();
intervalId = setInterval(showSlides, 3000);
}
var dotNode = document.getElementsByClassName("dot");
for (var i=0;i<dotNode.length;i++) {
dotNode[i].addEventListener("click", dotClickHandler);
}
var intervalId = setInterval(showSlides, 3000);
。
答案 0 :(得分:2)
case
表达式只返回一个值。如果您想首先使用round = 0
行,那么您可以执行以下操作:
ORDER BY (CASE WHEN round = 0 THEN 1 ELSE 2 END),
round, date
这可以缩短为:
ORDER BY (round = 0) DESC, round, date
但是,我并非100%确定这是你真正想要的。
如果round
只有两个值,那么您的问题会更有意义。在这种情况下,您确实希望先按date
排序:
ORDER BY date, round;
然而,这是对数据值的看法。
答案 1 :(得分:1)
如果每列一个
,可能会使用几种情况 SELECT *
FROM Data
WHERE tid=1
ORDER BY ( CASE WHEN round= 0 THEN date ELSE round END) ASC ,
( CASE WHEN round= 0 THEN NULL ELSE date END) ASC