MySQL值相同一次
对不起,我会说一点英语MySQL值相同一次,mysql,Mysql,对不起,我会说一点英语 CREATE TABLE `links` ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, category_id INT NOT NULL, -- 1: Facebook, 2: Twitter, ... url VARCHAR(8) NOT NULL, state TINYINT(1) NOT NULL -- boolean ); INSERT INTO `links` ( `id`, `category_id`, `url
CREATE TABLE `links` (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
category_id INT NOT NULL, -- 1: Facebook, 2: Twitter, ...
url VARCHAR(8) NOT NULL,
state TINYINT(1) NOT NULL -- boolean
);
INSERT INTO `links` ( `id`, `category_id`, `url`, `state` ) VALUES
( 1, 1, 'cnn', 1 ), -- Facebook
( 2, 2, 'cnn', 1 ), -- Twitter
( 3, 1, 'bbc', 1 ), -- Facebook
( 4, 2, 'bbc', 1 ), -- Twitter
( 5, 1, 'cnn', 1 ), -- It's wrong. This is same as id=1
( 6, 1, 'cnn', 1 ), -- It's wrong. This is same as id=1 (and id=5)
( 7, 1, 'abc', 0 ); -- It's wrong. This is state!=1.
我想在MySQL选择后显示这个
category_id | count
1 2
2 2
这是:
SELECT * FROM `links` ???
谢谢。试试以下方法:
SELECT category_id, COUNT(DISTINCT url) AS count
FROM links
WHERE state = 1
GROUP BY category_id
您需要将不同的计数和分组方式放在一起
select
category_id,
count(distinct url) as `count`
from links where state = 1 group by category_id ;
为避免插入5和6,请将其添加到表中:
UNIQUE(`category_id`, `url`)
如果不希望插入state=0,则不要指定它。将DEFAULT'1'
添加到state
的声明中,并从插入中删除该列
因此,您可以从insert中删除
id
和1..7,因为这就是AUTO_INCREMENT的全部内容。您正在查找sql.Close的GROUP BY子句,但看起来OP希望过滤掉最后一个条目“错误”。不太好。它是5(Facebook)和2(Twitter),而不是2(FB)和2(T)。我现在已经包括了checkin-where子句。