这就是我想要实现的目标:
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
答案 0 :(得分: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
答案 1 :(得分:0)
您需要使用TOP子句来获取第一行。
至于你的其他查询,我真的很难理解。但是,您需要使用AND和OR运算符来实现此功能。您可以使用括号(括号)对它们进行分组。
SELECT TOP(1)* FROM ventas 位置=&#39; cc21&#39; AND((A和B)或(C)或(D))
希望这会有所帮助。
答案 2 :(得分: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");
}
}
它不干净也不紧凑,但它完成了工作;)
坦克大家为你的无价帮助