MySql:选择两个特定值之间的行:

时间:2017-05-02 16:53:03

标签: mysql sql

我有这张桌子:

enter image description here

我想选择'inizio_votazione1'e fine_votazione1'之间的行。

我试过这段代码:

$sql  = "SELECT codice FROM scansioni WHERE codice BETWEEN 'inizio_votazione1' 
AND 'fine_votazione1'";

while ($row = $result->fetch_row()) {
// print_r($row);

$res = $row[0];
echo $res;
echo "<br />";
}

但我看不到结果。

检索所需结果的正确语法是什么? 感谢

4 个答案:

答案 0 :(得分:1)

我认为你真的不想使用BETWEEN。这将基本上寻找在这两者之间按字母顺序排列的值。我认为你可以这样做:

SELECT codice
FROM scansioni
WHERE id > (SELECT MIN(id) 
            FROM scansioni
            WHERE codice IN ('inizio_votazione1', 'fine_votazione1'))
  AND id < (SELECT MAX(id) 
            FROM scansioni
            WHERE codice IN ('inizio_votazione1', 'fine_votazione1'))

这可能不是最优雅的解决方案,但是根据我的尝试,它有效。

更好的选择可能是添加一个单独的表来存储每个组的开始和结束id。然后,您可以为所需的组获取开始和结束id,然后从scansioni中选择id s在正确范围内的所有值。

答案 1 :(得分:0)

试试这个:

SELECT codice FROM scansioni WHERE codice between 'inizio_votazione1' abd 'fine_votazione1'

答案 2 :(得分:0)

尝试更改:

$sql  = SELECT codice FROM scansioni WHERE codice BETWEEN 'inizio_votazione1' 
AND 'fine_votazione1';

要:

$sql  = "SELECT codice FROM scansioni WHERE codice BETWEEN 'fine_votazione1' 
AND 'inizio_votazione1'";

BETWEEN使用排序顺序来确定结果。

此外,字符串需要在php中引用。

答案 3 :(得分:0)

试试这个: -

SELECT codice FROM `scansioni` WHERE id between (select id from scansioni where codice='inizio_votazione1') and (select id from scansioni where codice='fine_votazione1')