我得到了一个类似下面名为dtr的表。我在使用BETWEEN查询时遇到问题。像这样:
$between = mysql_query("Select * from dtr where State Between 'Check In' And 'Check Out'");我希望它所做的就是在in、Check In和Check Out之间获取状态为Out和Out的行。但这似乎行不通。我还应该使用什么?还是这样做?因为我得到的都是签到和签出结果。
Name | AC-No.| Date | Time | State | Exception| Operation
-------------+-------+-----------+--------------+------------+----------+----------
Johnny Starks| 1220 | 5/13/2013 | 11:45:18 PM | Check In | OK |
Johnny Starks| 1220 | 5/14/2013 | 12:46:58 AM | Out | Out |
Johnny Starks| 1220 | 5/14/2013 | 12:52:41 AM | Out Back | Out |
Johnny Starks| 1220 | 5/14/2013 | 02:12:50 AM | Out | Out |
Johnny Starks| 1220 | 5/14/2013 | 02:43:11 AM | Out Back | Out |
Johnny Starks| 1220 | 5/14/2013 | 05:46:58 AM | Out | Out |
Johnny Starks| 1220 | 5/14/2013 | 06:22:41 AM | Out Back | Out |
Johnny Starks| 1220 | 5/14/2013 | 16:55:12 AM | Check Out | OK |发布于 2013-06-17 12:40:24
将查询与IN一起使用
Select * from dtr
where State IN('Check In','Check Out','Out','Out Back')BETWEEN主要用于date和numeric数据。
发布于 2013-06-17 14:05:16
只有在以下情况下,才能对您的范围使用字符串比较:
'Check In' < 'Out' < 'Out Back' < 'Check Out'因此,您必须使用IN运算符并使用grouping来计算每个状态出现的次数:
SELECT `State`, COUNT(*)
FROM dtr
WHERE State IN ('Check In', 'Out', 'Out Back', 'Check Out')
GROUP BY `State`;结果:
Check In | 1
Out | 3
Out Back | 3
Check Out | 1https://stackoverflow.com/questions/17140463
复制相似问题