0

这就是我想要实现的目标:

SELECT  * 
FROM  ventas WHERE (
posicion = 'cc21' 
AND inic < NOW() 
AND fin > NOW()
) ELSE (
WHERE posicion = 'cc21' 
AND fijo = 1)
ELSE ( WHERE posicion = 'cc21' 
AND hits < limite ) 
AND contenido = 'notas' 
LIMIT 1 

我已经在这个站点中尝试了 JOIN 和其他示例,但似乎没有为我指出这个特殊情况的正确方向,感谢任何帮助:)

这不起作用

    SELECT 
      TOP (1) * 
    FROM
      ventas 
    WHERE posicion = 'cc21' 
      AND (inic < NOW() AND fin > NOW()) 
      OR (fijo = 1) 
      OR (hits < limite) 
      AND contenido = 'notas' 
    LIMIT 1 
4

3 回答 3

1

您可以直接使用OR

SELECT  * 
FROM    ventas 
WHERE   
        (
            (posicion = 'cc21' AND inic < NOW() AND fin > NOW())
            OR
            (posicion = 'cc21' AND fijo = 1)
            OR
            (posicion = 'cc21' AND hits < limite ) 
        )
        AND 
        contenido = 'notas' 
LIMIT   1 
于 2013-02-22T05:36:25.637 回答
0

最后在潜水并没有找到鱼之后,我求助于这个:

$cc21 = mysqli_query($not,"SELECT * FROM ventas WHERE posicion = 'cc21'
AND inic < NOW() AND fin > NOW() and contenido = 'notas' LIMIT 1");
if (mysqli_num_rows($cc21) == 0) {
$cc21 = mysqli_query($not,"SELECT * FROM ventas WHERE posicion = 'cc21'
AND fijo = '1' and contenido = 'notas' LIMIT 1");
if (mysqli_num_rows($cc21) == 0) {
$cc21 = mysqli_query($not,"SELECT * FROM ventas WHERE posicion = 'cc21' AND hits < limite AND  contenido = 'notas' LIMIT 1");
}
}

它既不干净也不紧凑,但它完成了工作;)

为大家提供宝贵的帮助

于 2013-02-22T07:56:07.050 回答
0

您需要使用 TOP 子句来获取第一行。

至于您查询的其余部分,我真的很难理解。但是,您需要使用 AND 和 OR 运算符来完成这项工作。您可以使用括号(方括号)对它们进行分组。

SELECT TOP (1) * FROM ventas WHERE position = 'cc21' AND ( (A AND B) OR (C) OR (D))

希望这可以帮助。

于 2013-02-22T05:42:36.017 回答