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

MySql:选择两个特定值之间的行:,mysql,sql,Mysql,Sql,我有这张桌子: 我想选择'Inalizio_votazione1'和'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]; ec

我有这张桌子:

我想选择'Inalizio_votazione1'和'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 />";
}
但我看不到结果

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

试试这个:

SELECT codice FROM scansioni WHERE codice between 'inizio_votazione1' abd 'fine_votazione1'
尝试更改:

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

BETWEEN使用排序顺序确定结果


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

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

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。然后,您只需获取所需组的开始和结束ID,然后从scansioni中选择ID在正确范围内的所有值。

尝试以下操作:-

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

这需要多大的动力?如果总是那些你想要的记录,我会在你的id字段上运行一个中间值:其中id在1和9之间你想要所有这些值之间的行吗?它是动态的,因为是运行时投票,所以我想找到方法来标记每个votation插入一个带有“开始”和“结束”的记录你是对的,但是我写问题的时候打错了,对不起,你是对的。我没有在MySQL中尝试过这个解决方案。我只是修改了我的答案,以便它能适用于MySQL。
SELECT codice FROM `scansioni` WHERE id between (select id from scansioni where codice='inizio_votazione1') and (select id from scansioni where codice='fine_votazione1')