此查詢有什麼問題?每行計數
SELECT *, (SELECT COUNT(*)
FROM
(
SELECT NULL
FROM words
WHERE project=projects.id
GROUP BY word
HAVING COUNT(*) > 1
) T1) FROM projects
在MySQL返回1054未知列'projects.id 'where子句'
感謝
此查詢有什麼問題?每行計數
SELECT *, (SELECT COUNT(*)
FROM
(
SELECT NULL
FROM words
WHERE project=projects.id
GROUP BY word
HAVING COUNT(*) > 1
) T1) FROM projects
在MySQL返回1054未知列'projects.id 'where子句'
感謝
這是行不通的嗎?
SELECT *, (SELECT COUNT(*)
FROM words
WHERE words.project=projects.id) as pCount
FROM projects
我正要發佈結構細節,當我看到你的帖子,做了詭計!豎起大拇指! – fabjoa 2010-10-31 13:37:54
你內心的子查詢一無所知外部查詢,所以projects
表不可用。
我怎麼知道?如果我正在進行JOIN項目,則無論項目如何,它都會計算每個單詞 – fabjoa 2010-10-31 13:28:49
@fabjoa:您能否向我們展示您的表結構以及預期輸出的示例? – 2010-10-31 13:36:48
順便說一句,祝賀mySQL金徽章! – 2010-11-01 15:54:04
它看起來像你試圖爲每個項目計數出現不止一次的字數。
你可以運行你的子查詢的所有項目,然後使用JOIN來從項目表中的數據的其餘部分:
SELECT projects.*, COUNT(word) AS cnt
FROM projects
LEFT JOIN (
SELECT project, word
FROM words
GROUP BY project, word
HAVING COUNT(*) > 1
) T1
ON T1.project = projects.id
GROUP BY projects.id
結果:
id cnt 1 0 2 1 3 2
測試數據:
CREATE TABLE projects (id INT NOT NULL);
INSERT INTO projects (id) VALUES (1), (2), (3);
CREATE TABLE words (project INT NOT NULL, word VARCHAR(100) NOT NULL);
INSERT INTO words (project, word) VALUES
(1, 'a'),
(2, 'a'),
(2, 'b'),
(2, 'b'),
(3, 'b'),
(3, 'b'),
(3, 'c'),
(3, 'c');
什麼是表格結構?查詢應該返回什麼? – 2010-10-31 13:27:14