› 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
luckylion
V2EX  ›  MySQL

sql 比较后联表查询的问题

  •  
  •   luckylion · Aug 20, 2014 · 3886 views
    This topic created in 4419 days ago, the information mentioned may be changed or developed.
    [price_table]
    (产品ID) (状态) (价格)
    Id | Pro_id | State | Price
    1 | 10 | 2 | 30
    2 | 10 | 2 | 50 (↑20)
    3 | 10 | 2 | 40 (↓-10)
    4 | 11 | 2 | 30
    5 | 11 | 1 | 80 (↑50)
    6 | 10 | 1 | 50 (↑10)
    7 | 12 | 2 | 45
    8 | 12 | 1 | 50 (↑5)
    10 | 13 | 2 | 50
    11 | 13 | 1 | 30 (↓-20)
    12 | 14 | 1 | 50

    ----------------------------------------------
    [pro_table]
    Id | Pro_name(产品名)
    7 | 笔记本
    10 | 电脑
    11 | 鼠标
    13 | U盘
    14 | 显示器
    ----------------------------------------
    [select] 查询结果
    pro.Id | Pro_name | Price as difference(价格比较后)
    11 | 鼠标 | 50
    10 | 电脑 | 10
    13 | U盘 | -20

    括号里的内容不存在表中,为了便于观看特意标注的
    5 replies  •  2014-08-21 14:05:32 +08:00
    jy02201949
        1
    jy02201949  
       Aug 20, 2014   ❤️ 1
    这上面有你跑的SQL语句?我读书少你不要骗我
    msg7086
        2
    msg7086  
       Aug 21, 2014   ❤️ 1
    这上面有你问的问题?我读书少你不要骗我
    javaluo
        3
    javaluo  
       Aug 21, 2014 via Android   ❤️ 1
    我读书少你不要骗我 获取差值的绝对最大值?
    比如state不需要你干嘛放出来
    javaluo
        4
    javaluo  
       Aug 21, 2014 via Android   ❤️ 1
    select Pro_id,Pro_name,max(abs(price-baseprice))
    from
    (select Pro_id, Pro_name,min(price) as baseprice
    from price_table a join pro_table b on a.Pro_id=b.Id
    group by Pro_id,Pro_name) m
    join price_table n on m.Pro_id=n.Pro_id
    group by Pro_id,Pro_name
    飞机要起飞了 还没写完 回头再说
    luckylion
        5
    luckylion  
    OP
       Aug 21, 2014
    @javaluo 要获取state值为1的数据
    后面有上下箭头括号里的值是取state值为1与最后添加state值为2相同Pro_id的差值

    比如说
    pro_id为10且state值为1的是第六行数据
    pro_di为10切state值为2最后添加的是第3行数据
    那么就是(Price)50-40=10

    最后根据比较后的price值进行倒叙排列

    price_table表中如果state只有状态为1或2的数据不需要显示
    price_table表中有但在pro_table中不存在对应的ID也不要显示
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1306 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:51 · PVG 00:51 · LAX 09:51 · JFK 12:51
    ♥ Do have faith in what you're doing.