"select r.* from user_role ur,role r where ur.user_id=? and ur.role_id=r.id";
"select * from role user_role ur,role r where ur.user_id=? and ur.role_id=r.id"有表role  和中间表user_role  
上面两句有什么区别???sql

解决方案 »

  1.   

    两条SQL都是查询的两张表 user_role 取别名为 ur  role 为 r 条件是ur.user_id 并且两张表的ID一样   在select 后面 是 r.*  就表示通过条件筛选把 role表里面的数据全部查询出来第二条SQL和第一条几乎一样 select 后面是 * 表示根据条件筛选查询两张表里面的所有数据另:你这是通过两张表查询的数据,如果数据少的可以这样查询,如果数据量比较大的话这样查询效率就会很低,建议用连接查询
    select * from user_role ur inner join role r on ur.user_id=? and ur.role_id=r.id
      

  2.   

    select * from role user_role ur,role r where ur.user_id=? and ur.role_id=r.id
    这里是不是多个role, 这句是2个表都会查询出来。上面的只是查询role 表的数据。