解释MySQL查询

时间:2015-11-15 15:32:14

标签: 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。我用错误的方式写了...对不起。

1 个答案:

答案 0 :(得分:4)

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. 根据ID的{​​{1}}列和Entries的{​​{1}}列加入(外部)两个表格 (对于来自用户集User
  4. 的非匹配行
  5. 过滤掉Users列中的值等于NULL
  6. 的记录
  7. 跳过前10行并获得0行
  8. 显示Category
  9. 'SomeCategory'Entries列的每一列

    警告

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

    修改

    编辑后5.应该先跳过0行并获得10行

    ORDER BYLIMIT offset, row_count

    相同