V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sayori
V2EX  ›  问与答

数据库白痴求教这种SQL查询应该怎么写....

  •  
  •   sayori · 2013-04-18 21:16:23 +08:00 · 3460 次点击
    这是一个创建于 4240 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如有两个表 item 和 info
    info表结构大概是:info_id , item_id , info_name,info_value....
    item中的每一行 在 info中都有多行关联的数据。info.item_id = item.id
    然后想做的是查询item并取得所有关联的info行。

    刚才研究了半天JOIN语句,但是好像只能返回一行info?
    又想过先查询出item.id然后再进行第二次查询,但这样做如果一次要取出N行时要对info查询N次。影响速度?

    求教,不胜感激。
    12 条回复    1970-01-01 08:00:00 +08:00
    123123
        1
    123123  
       2013-04-18 21:33:30 +08:00   ❤️ 1
    能否大概提供一下你所写的SQL,如果没有加类似 TOP 1 或 LIMIT 1 并且符合条件的数据不止一条的话,那么只返回一行是很神奇的情况
    yhy2008
        2
    yhy2008  
       2013-04-18 21:40:46 +08:00   ❤️ 1
    SELECT ······FROM item LEFT JOIN info WHERE info.item_id = item.id
    如果我没理解错应该是这样
    sayori
        3
    sayori  
    OP
       2013-04-18 21:57:38 +08:00
    @123123

    SELECT *
    FROM item
    LEFT JOIN `info` ON `info`.`item_id` = `item`.`id`
    WHERE `item`.`status` = '1'
    ORDER BY `item`.`id` DESC
    LIMIT 16
    xhinking
        4
    xhinking  
       2013-04-18 22:03:08 +08:00
    表中的测试数据有多少条?
    sayori
        5
    sayori  
    OP
       2013-04-18 22:06:49 +08:00
    @yhy2008 把ON 改成WHERE 发生错误呢... 用的是MYSQL
    sayori
        6
    sayori  
    OP
       2013-04-18 22:09:03 +08:00
    @xhinking 有多条。我检查过了..
    sayori
        7
    sayori  
    OP
       2013-04-18 22:41:29 +08:00
    @123123 悲剧,我再试了下发现确实返回多行。但每行一样ITEM数据都一样,不同的是info字段。这不是我想要的...

    我想的是 比如用数组生成记录集时,有一个元素里是INFO的内容(当然这个元素的值也是数组..)

    越搞越乱了....不管怎样先感谢各位。
    123123
        8
    123123  
       2013-04-18 22:45:28 +08:00
    @sayori 没错,依照你的写法就是这样的返回值。如果你只想要 INFO 表的字段,那么 SELECT 后不要用 *,用 INFO.*
    yhy2008
        9
    yhy2008  
       2013-04-19 09:59:23 +08:00
    @sayori 不好意思写错了是用ON
    是不是因为WHERE后的限定条件,如果item.status=1是唯一的话,它只会返回item一样的数据
    Cadina
        10
    Cadina  
       2013-04-19 17:03:09 +08:00
    最反感字段前面还要加表名了
    xunyu
        11
    xunyu  
       2013-04-19 17:09:48 +08:00
    @sayori 后台是用php吗?
    Narcissu5
        12
    Narcissu5  
       2013-04-19 18:28:23 +08:00
    提醒下楼主,数据库求助一般是把表的create 脚本放出来,比你的描述会给力得多。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3286 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:42 · PVG 20:42 · LAX 04:42 · JFK 07:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.