繁体   English   中英

MySQL连接限制与两个表

[英]mysql join limit with two tables

我有两个这样的表->

Categories
-----------
id      name
---------
1 -->      a
2    -->   b
3    -->   c



    Messages
    ------------
    id        catid    message
    ---------------------------
    1   -->      1   -->     aa
    2      -->   1   -->     bb
    3        --> 1   -->     cc
    4        --> 2   -->     dd
    5        --> 3    -->    ee
    6        --> 3    -->    ff

    i want to join the tables for get FIRST message from messages table,

我想要这样的查询结果->

-------------------------------
id         name       message
1          a          aa
2          b          dd
3          c          ee

我找到一个密码

select * from categories c, items i
    -> where i.categoryid = c.id
    -> group by c.id;

但没有任何ORDER BY程序

SELECT c.*, i.*
FROM categories c
JOIN items i ON (i.categoryid = c.id)
LEFT OUTER JOIN items i2 ON (i2.categoryid = c.id 
  AND (i.message > i2.message OR i.message = i2.message AND i.id > i2.id))
WHERE i2.categoryid IS NULL
ORDER BY c.id;

由于MySQL在GROUP BY查询上表现不佳,因此在MySQL上往往表现得更好。

如果您对第一个表进行分组,则MySql将始终从第二个表返回第一个记录。

SELECT a.id, a.name, b.message FROM Categories a, Messages b WHERE b.catid = a.id GROUP BY a.id ORDER BY a.id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM