Mysql 使用group by查询的单个结果
请帮我写这个查询 我想得到所有单词,对于给定用户,最后一次重复的日期早于今天,或者没有重复 我有类似的东西,但它是不正确的Mysql 使用group by查询的单个结果,mysql,select,Mysql,Select,请帮我写这个查询 我想得到所有单词,对于给定用户,最后一次重复的日期早于今天,或者没有重复 我有类似的东西,但它是不正确的 SELECT * FROM `Word` w LEFT JOIN ( SELECT * FROM `Repetition` GROUP BY word_id ORDER BY next DESC ) r ON w.id = r.word_id WHERE wordset_id = 1 AND (r.user_id IS NULL) OR r.nex
SELECT * FROM `Word` w LEFT JOIN (
SELECT * FROM `Repetition`
GROUP BY word_id
ORDER BY next DESC
) r ON w.id = r.word_id
WHERE wordset_id = 1 AND (r.user_id IS NULL) OR r.next < CURRENT_DATE
子查询应返回给定用户/单词组合的最后一次重复表
我想得到:对于给定的用户,所有没有任何重复或具有适当含义的单词在之前或今天都有重复我可能不完全理解这个问题,但换个说法,你想返回所有今天没有重复的单词吗
SELECT * FROM word
WHERE word_id NOT IN (
SELECT word_id FROM repetition WHERE next >= CURRENT_DATE
)
是那样的还是我走远了?我不太清楚你想用wordset\u id或user\u id做什么。我想你不必在这里使用子查询,只要使用join就可以了
SELECT * FROM `Word` w LEFT JOIN
(SELECT word_id, user_id, `repNo`, `repCount`, `date`, `ef`, MAX(next) next
FROM `Repetition` GROUP BY `word_id`,`user_id`) r ON w.id = r.word_id
WHERE wordset_id = 1 AND (r.user_id IS NULL) OR r.next < CURRENT_DATE
SELECT words.*
FROM words
-- Left join makes sure that you get one result for each word
LEFT JOIN Repetition ON (
(Words.id = Repetition.word_id)
-- Get just one user's result
AND (Repetition.user_id = ?)
)
-- And filter today's results:
WHERE (Repetition.id IS NULL) OR (Repetition.next < NOW())
GROUP BY Words.id
对于给定用户,所有没有任何重复或具有适当含义的单词在之前或今天重复可能您知道如何在DQL中编写它?这似乎可行,但repNo、repCount、date和ef的值可能不正确。检查是否不清楚您想要获得什么,所有用户/单词组合,还是仅针对一个给定用户的单词?对于给定用户,所有没有任何重复或具有适当含义的单词之前或今天重复