php - 解释 MySQL 查询

标签 php mysql sql

几天前,我在这里询问了一个解决方案来检索从两个不同表中获取值的查询。这个问题问得相当快,感谢这里这个很棒的社区...但继续:我使用了查询并且它工作得很好,但我不明白它。查询如下:

SELECT e.*, u.Username 
FROM Entries AS e 
LEFT JOIN Users AS u ON u.ID = e.User 
WHERE e.Category = 'SomeCategory' 
LIMIT 0, 10

谁能解释一下查询的每个“步骤”的作用吗? “WHERE”、“LIMIT”、“SELECT”和“FROM”我知道,但其他对我来说相当复杂。

谢谢

编辑:LIMIT 10,0 更改为 LIMIT 0,10。我写错了...抱歉。

最佳答案

SELECT e.*, u.Username 
FROM Entries AS e 
LEFT JOIN Users AS u ON u.ID = e.User 
WHERE e.Category = 'SomeCategory' 
LIMIT 10, 0;   -- are you sure about it???

它是如何工作的:

  1. 获取 Entries 表并将其“重命名”为 e(添加别名)
  2. 获取 Users 表并将其“重命名”为 u
  3. 根据 Entries 中的 ID 列和 Users 中的 User 连接(外部)两个表 (对于用户设置的不匹配行NULL)
  4. 过滤掉Category列中的值等于'SomeCategory'的记录
  5. 跳过前 10 行并获取 0 行
  6. 显示 Entries 中的每一列以及 Users 中的 Username

警告

如果没有显式的ORDER BY,您可以在执行之间获得不同的结果集。为什么要返回空结果集LIMIT offset, row_count

编辑:

编辑后 5. 应为跳过前 0 行并获取 10 行

LIMIT 0, 10LIMIT 10

相同

关于php - 解释 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33721438/

相关文章:

mysql - 复制 MySQL 用户以创建新用户

sql - 如何从表中选择列的唯一值?

mysql - 按多个字段进行 groupBy 时计算行数

MySQL 显示表名和列

sql - 将字符串转换为日期和时间

sql - 加快缓慢的SQL查询

php - Laravel 5 数据库连接问题

php - 如何从 wp json rest api 获取特定数据

php - 如何在不访问 Laravel (PHP) 中的 Web 的情况下更新表格?

javascript - 从 checkbox1 中选择项目并从 dropdown1 中选择项目后,结果在 dropdown2 中显示/隐藏选项值