我已经尝试了几个陈述,但似乎无法得到我需要的结果。这是我到目前为止所做的,但这会产生一个空表。
我需要计算word_id
表格中wordnik_examples
在JOIN
内小于20的数量。
SELECT wordnik_examples.word_id,wordnik_word.word,count(wordnik_examples.word_id) as total
FROM `wordnik_examples`
JOIN `wordnik_word` ON wordnik_examples.word_id = wordnik_word.ID
WHERE (SELECT count(wordnik_examples.word_id) FROM `wordnik_examples`) < 20
GROUP BY wordnik_examples.word_id ORDER BY `total` DESC
我也试过
SELECT wordnik_examples.word_id,wordnik_word.word,count(wordnik_examples.word_id) as total
FROM `wordnik_examples`
JOIN `wordnik_word` ON wordnik_examples.word_id = wordnik_word.ID
WHERE total < 20
GROUP BY wordnik_examples.word_id ORDER BY `total` DESC
但是mysql回来时出现错误,指出total
列未知。
我还尝试使用HAVING
代替WHERE
同时使用这两个查询,但这种方法也不起作用。
答案 0 :(得分:1)
你的分组不够深刻。如果您有两个“常规”列后跟一个聚合,则按两个“常规”列分组。 MySQL很少让您只通过非聚合列的子集进行分组。
对于任何聚合的过滤,这里的意思是计数,您必须使用HAVING
。
SELECT
wordnik_examples.word_id,
wordnik_word.word,
count(wordnik_examples.word_id) as total
FROM wordnik_examples
JOIN wordnik_word ON wordnik_examples.word_id = wordnik_word.ID
GROUP BY
wordnik_examples.word_id,
wordnik_word.word
HAVING count(wordnik_examples.word_id) < 20
答案 1 :(得分:0)
如果我理解正确你想要进行连接并计算wordnik_examples.word_id小于20的实例数。你将总数分配为一堆collumns,然后尝试检查数据。 试试这个 -
SELECT wordnik_examples.word_id,wordnik_word.word,count(wordnik_examples.word_id)
来自wordnik_examples
加入wordnik_word
ON wordnik_examples.word_id = wordnik_word.ID
WHERE wordnik_examples.word_id&lt; 20
GROUP BY wordnik_examples.word_id ORDER BY total
DESC