对不起,我会说一点英语。
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 SELECT之后显示这个......
category_id | count
1 2
2 2
这是:
SELECT * FROM `links` ???
感谢。
答案 0 :(得分:1)
尝试类似:
SELECT category_id, COUNT(DISTINCT url) AS count
FROM links
WHERE state = 1
GROUP BY category_id
答案 1 :(得分:0)
你需要不同的计数和分组
select
category_id,
count(distinct url) as `count`
from links where state = 1 group by category_id ;
答案 2 :(得分:0)
要避免插入5和6,请将其添加到表格中:
UNIQUE(`category_id`, `url`)
如果您不想插入state = 0,请不要指定它。将DEFAULT '1'
添加到state
的声明中,并从INSERT中删除该列。
就此而言,您也可以从INSERT中删除id
和1..7,因为这就是AUTO_INCREMENT的全部内容。