V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
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
mamahaha
V2EX  ›  MySQL

求 3 条 mysql 的查询语句

  •  
  •   mamahaha · 2019-01-27 08:01:37 +08:00 · 4129 次点击
    这是一个创建于 2134 天前的主题,其中的信息可能已经有所发展或是发生改变。
    utab1=子用户表 1,id(用户 id),name(作者名),pwd
    utab2=子用户表 2,id(用户 id),name(作者名),pwd
    posts=文章表,id(文章 id),u_id(用户 id),title,content
    语句 1:向用子户表内添加新用户,当 utab1 的 id>1000 时,新用户存入 utab2,并且 utab2 的初始 id 为 1001
    语句 2:查询 posts 表内 id=1 的文章的作者名
    语句 3:查询 id=1002 的用户的所有文章
    请教一下这样的情况如何查询啊,还有不确定是不是需要做一个用户总表来进行调度。
    12 条回复    2019-01-28 10:56:18 +08:00
    mamahaha
        1
    mamahaha  
    OP
       2019-01-27 08:14:44 +08:00
    语句 2 改为查询 posts 表内 id=1,u_id=1001 的文章的作者名
    d3vil
        2
    d3vil  
       2019-01-27 08:16:00 +08:00 via iPhone   ❤️ 1
    语句 1 要用触发器?或者设置表一的某种初始参数?不懂,不会没遇过相似情景。
    2:(select u.name from utab1 u left join posts p on u.id = p.u_id) union all (select u.name from utab2 u left join posts p on u.id = p.u_id)
    3:select p.title from utab2 u left join posts p on u.id = p.u_id where u.id = 1002
    d3vil
        3
    d3vil  
       2019-01-27 08:17:30 +08:00 via iPhone   ❤️ 1
    @mamahaha 你这个改的莫名其妙阿,你都有 uid 了,你直接查用户表不就行了吗?
    mamahaha
        4
    mamahaha  
    OP
       2019-01-27 08:22:41 +08:00   ❤️ 1
    @d3vil 谢谢回答啊,目前我思维有点混乱啊
    d3vil
        5
    d3vil  
       2019-01-27 08:23:37 +08:00 via iPhone   ❤️ 1
    @mamahaha 看出来了
    shakoon
        6
    shakoon  
       2019-01-27 11:17:02 +08:00 via Android   ❤️ 1
    建一个视图,把分表 union all 起来,查询时就查这个视图
    mamahaha
        7
    mamahaha  
    OP
       2019-01-27 11:53:16 +08:00
    @shakoon 请收下我的感谢
    mamahaha
        8
    mamahaha  
    OP
       2019-01-27 11:57:39 +08:00
    @shakoon 分开表存是为了提高查询效率,不知道 union all 会不会影响效率
    d3vil
        9
    d3vil  
       2019-01-27 12:07:37 +08:00 via iPhone   ❤️ 1
    @mamahaha
    sql server 必须把视图查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,sql server 也要把它变成一个复杂的结合体,需要花费一定的时间。
    要么写存储过程,要么用我的 sql 直接查,你看重性能,就少用视图
    Linxing
        10
    Linxing  
       2019-01-27 14:15:15 +08:00
    歪个楼 UNION ALL 的情况 是在查询的时候做 还是 SELECT 两个结果出来 在语言的层面做处理 性能上有差别吗
    CRVV
        11
    CRVV  
       2019-01-28 09:06:59 +08:00 via Android
    如果连 3 都不过写,这活就别干了,从头学一下 SQL 再说

    如果要分表,也不是 1000 行就分的,你说 1000 万行分一个表好像还可以接受

    直接搞两个表完事,肯定比你这么折腾出来的快
    mamahaha
        12
    mamahaha  
    OP
       2019-01-28 10:56:18 +08:00
    @CRVV 本来这个就是在靠做程序学 sql,举例子说 1000 行和说 1000 万行性质有区别吗?啥叫从头学?你这理解能力根本就没看出来为啥要分表吧?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1022 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:46 · PVG 03:46 · LAX 11:46 · JFK 14:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.