mysql查询where IN语句
我想做以下工作:mysql查询where IN语句,mysql,sequence,database,between,Mysql,Sequence,Database,Between,我想做以下工作: SELECT count(id) FROM table WHERE value BETWEEN 3 AND 40; SELECT count(id) FROM table WHERE value IN(3, 4, 5, 6, 7, 8, 9, 10, 11, ..., 40); 但它应该做到以下几点: SELECT count(id) FROM table WHERE value BETWEEN 3 AND 40; SELECT count(id) FROM table
SELECT count(id) FROM table WHERE value BETWEEN 3 AND 40;
SELECT count(id) FROM table WHERE value IN(3, 4, 5, 6, 7, 8, 9, 10, 11, ..., 40);
但它应该做到以下几点:
SELECT count(id) FROM table WHERE value BETWEEN 3 AND 40;
SELECT count(id) FROM table WHERE value IN(3, 4, 5, 6, 7, 8, 9, 10, 11, ..., 40);
它甚至应该打印出3到40之间的值的零计数(id),而不是值=x。我想检查一个值是否在一个序列中(1,2,3,4,…,50)
有人知道如何用mysql实现这一点吗
谢谢。假设我理解你的问题:
SELECT count(id) FROM table WHERE value >= 3 AND value <= 40 AND value != 'x'
以下是您要寻找的内容的猜测:
select c.Value, count(t.Value) as Count
from (
select 3 as Value
union all select 4
union all select 5
union all select 6
union all select 7
union all select 8
union all select 9 --add more as needed
) c
left outer join MyTable t on c.Value = t.Value
group by c.Value
MySQL没有递归功能,所以只能使用数字表技巧-
DROP TABLE IF EXISTS `example`.`numbers`;
CREATE TABLE `example`.`numbers` (
`id` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO NUMBERS
(id)
VALUES
(NULL)
…获取所需的任意多个值SELECT n.id
FROM NUMBERS n
WHERE n.id BETWEEN 3 AND (? - 1)
OR n.id BETWEEN (? + 1) AND 40
SELECT x.id AS value,
COALESCE(COUNT(y.id), 0) AS cnt
FROM (SELECT n.id
FROM NUMBERS n
WHERE n.id BETWEEN 3 AND (? - 1)
OR n.id BETWEEN (? + 1) AND 40) x
LEFT JOIN YOUR_TABLE yt ON yt.value = x.id
GROUP BY x.id
我想你要找的是:
从表中选择值、计数(id)
其中值介于3和40之间
按值分组
但是对于不存在的值,这不会给你任何计数(id)=0行。这个问题有很多混淆。你在这里至少问了3个不同的问题,你到底想做什么?我想得到一个结果集,其中值从3到40的计数(id),即使值=x的计数(id)为零。不!其中值=3或值=4或值=5或。。。无论如何,谢谢你。@Vincent:这在逻辑上是等价的,但是
或对性能的影响是众所周知的……如果没有值,例如35,我想计算(id),所以我不能使用3到40之间的WHERE值,因为它不会出现在我的结果集中。你现在明白了吗?我想让结果集中的每个计数(id)都在3到40之间,即使是计数(id)=0的值。我根本不知道这意味着什么。我想检查值是否等于3,4,5,6,7,…,40,但不在3或40之间,是否等于3到40之间的每个数字。@Vincent:查看我的更新,根据需要从代码中推断。