› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
iloveyou
V2EX  ›  MySQL

取出一条记录的同时顺便把另外一个表里对应的记录数也取出,只能用子查询了吗?就是一对多关系

  •  
  •   iloveyou · Jul 9, 2013 · 4181 views
    This topic created in 4827 days ago, the information mentioned may be changed or developed.
    SELECT *,(SELECT COUNT(*) FROM item WHERE category = category.id) as item_count FROM category

    还有别的更优化的方法吗?
    15 replies  •  1970-01-01 08:00:00 +08:00
    fangzhzh
        1
    fangzhzh  
       Jul 9, 2013
    可不可以不要select *, 表结构一变,你这代码就随时可能爆炸啊
    iloveyou
        2
    iloveyou  
    OP
       Jul 9, 2013
    @fangzhzh 我这是为了节省篇幅
    另外,好多框架带的orm,new model不都是*吗?
    再另外,主贴的问题你有什么看法?
    fangzhzh
        3
    fangzhzh  
       Jul 9, 2013
    除了select*不能接受, 你这写法我能接受
    sutar
        4
    sutar  
       Jul 9, 2013
    JOIN
    iloveyou
        5
    iloveyou  
    OP
       Jul 9, 2013
    @sutar 小生愚钝 求赐教
    6mN361AJx04in471
        6
    6mN361AJx04in471  
       Jul 9, 2013
    @iloveyou 好多框架带的orm,new model不都是*吗?这是错的,可以自定义筛选字段。
    lichao
        7
    lichao  
       Jul 9, 2013
    select category.field1, item.field2 from category, item where item.categoryID = category.categoryID
    iloveyou
        8
    iloveyou  
    OP
       Jul 9, 2013
    @takwai yii里面有个findByPk(1),不就是*吗。
    iloveyou
        9
    iloveyou  
    OP
       Jul 9, 2013
    @lichao 你没明白我主贴的意思
    lichao
        10
    lichao  
       Jul 9, 2013   ❤️ 1
    select category.categoryName, count(item.itemID) as YOUR_COUNT from category, item where item.categoryID = category.categoryID group by category.categoryID
    lichao
        11
    lichao  
       Jul 9, 2013   ❤️ 1
    select category.categoryID, count(item.itemID) as YOUR_COUNT from category, item where item.categoryID = category.categoryID group by category.categoryID
    cdfmr
        12
    cdfmr  
       Jul 9, 2013   ❤️ 1
    select category, count(*) from item group by category,将此临时表与category表做联合查询。
    msg7086
        13
    msg7086  
       Jul 9, 2013
    可以分两次执行查询,不一定要一次拿回数据吧。真要一次取回的话考虑API里的multi-query?

    比如PHP里, http://php.net/mysqli-multi-query
    master
        14
    master  
       Jul 9, 2013
    话说为什么不用JOIN ?
    比如像这样:

    SELECT category.*, COUNT(item.id) as item_count FROM category LEFT JOIN item ON item.category = category.id
    master
        15
    master  
       Jul 9, 2013   ❤️ 1
    抱歉,漏了 GROUP

    SELECT category.*, COUNT(item.id) as item_count
    FROM category
    LEFT JOIN item ON item.category = category.id
    GROUP BY category.id
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2737 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 14:29 · PVG 22:29 · LAX 07:29 · JFK 10:29
    ♥ Do have faith in what you're doing.