php - phpmyadmin sql 代码出现问题,在两个单词表和单词学习表之间进行选择

标签 php mysql sql phpmyadmin

所以,我有两个表:单词和单词学习

我正在开发一个项目,您可以在其中学习一些新词汇(作为一个 child ),我希望获得:其中字母与用户学到的最后一个单词相同的所有单词。我不知道这是否清楚,但它是这样的:我学会了单词

  1. “ cookies ”
  2. “鸟”
  3. “蓝色”

我想获取首字母与蓝色相同的所有单词,因为它是用户学到的最后一个单词。

我写的代码是这样的:

select * 
from words p 
where letter = (
    select letter 
    from words p 
    where exists (
        select max(idWord) 
        from wordslearned pa 
        where p.idWord = pa.idWord and pa.idUser = idUser 
    ) 
    order by idWord desc 
    limit 1 
)

但是通过这段代码,它向我显示了用户仍然没有学到的单词,因为“desc”而从底部开始。

有人可以帮助我吗?如果您不明白,请告诉我,以便我向您澄清。

最佳答案

EXISTS 仅检查子查询是否找到任何行,不使用它选择的值。因此 MAX(idWord) 没有用于任何用途。

您想要获取用户学到的最后一行的字母,即:

SELECT letter
FROM wordsLearned pa
ORDER BY idWord DESC
WHERE pa.idUser = p.idUser
LIMIT 1

整个查询将是:

SELECT *
FROM words p
WHERE letter = (
    SELECT letter
    FROM wordsLearned pa
    WHERE pa.idUser = p.idUser
    ORDER BY idWord DESC
    LIMIT 1
)

这也可以写成 JOIN:

SELECT p.*
FROM words p
JOIN wordsLearned p1 ON p.letter = p1.letter AND p.idUser = p1.idUser
JOIN (
    SELECT idUser, MAX(idWord) AS maxId
    FROM wordsLearned
    GROUP BY idUser) p2 ON p1.idUser = p2.idUser and p1.idWord = p2.maxId

关于php - phpmyadmin sql 代码出现问题,在两个单词表和单词学习表之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55698949/

相关文章:

sql - 使用 SQL 将逗号分隔的字符串表行拆分为单独的行

javascript - php echo 和 JQuery .load 内的 Bootstrap 模式

mysql - JPA/hibernate : Missing table error

mysql - 创建外键语法错误的表

php - 获取多行的年份部分

sql - 什么是基数以及它如何影响性能 (SQL Server)?

php - 我对 Memcache、Memcached 和 php5-memcache 感到困惑

php - 菜单中的 Wordpress 自定义链接不起作用

php多关键字搜索

mysql - Hibernate 条件示例查询获取多条记录