在mysql数据库上加入查询[重复]

Posted

技术标签:

【中文标题】在mysql数据库上加入查询[重复]【英文标题】:Join query on mysql database [duplicate] 【发布时间】:2018-07-23 05:09:59 【问题描述】:

我想从另一个表中获得一个表和两个不同名称的完整列表,其中第一个表的两个 id 与另一个两个表匹配。 这是我的查询:

$sql = 
      "select 
           ls.id, ls.cat_id, ls.sub_id, rs.cat_name, lh.sub_cat_name, 
           ls.prod_name, ls.price, ls.availability, ls.description, ls.img_1, 
           ls.img_2, ls.img_3,ls.img_4, ls.img_5, ls.img_6, ls.img_7, ls.img_8, 
           ls.img_9, ls.img_10, ls.prod_order, ls.type 
         from product as ls 
         left join category as rs on rs.id = ls.cat_id 
         left join subcategory as lh on lh.id = ls.sub_id 
         where ls.id ='".$pid."'";

所以查询工作正常。所以我的问题是这可以标准化为长度更短的查询吗?

【问题讨论】:

如果你想从ls得到所有东西,ls.*不行吗?会使查询更短。 这里没有什么可以缩短的(生产代码中不推荐使用select *)。这个查询太简单了。 你认为它为什么需要缩短? @Akshay 在查询中写这么多字段非常烦人,实际上我想要我的第一个字段中的所有内容。 【参考方案1】:

您的查询

select
  **
  ls.id,
  ls.cat_id,
  ls.sub_id,
  rs.cat_name,
  lh.sub_cat_name,
  ls.prod_name,
  ls.price,
  ls.availability,
  ls.description,
  ls.img_1,
  ls.img_2,
  ls.img_3,
  ls.img_4,
  ls.img_5,
  ls.img_6,
  ls.img_7,
  ls.img_8,
  ls.img_9,
  ls.img_10,
  ls.prod_order,
  ls.type
  **
from product as ls 
  left join category as rs
    on rs.id = ls.cat_id
  left join subcategory as lh
    on lh.id ls.sub_id
where ls.id = $pid;

所以粗体(被** **括起来)字符可以用ls替换。*表示表中的所有属性都已被选中,所以查询看起来像

select
  ls.*
from product as ls 
  left join category as rs
    on rs.id = ls.cat_id 
  left join subcategory as lh
    on lh.id = ls.sub_id 
where ls.id ='".$pid."'";

【讨论】:

您不应该在生产代码中使用 select *。见***.com/questions/321299/… @DipyanDas 你感谢我,尽管我在评论中写道你不应该这样做。

以上是关于在mysql数据库上加入查询[重复]的主要内容,如果未能解决你的问题,请参考以下文章

对mysql中的加入表应用限制[重复]

mysql删除不可重复键

mysql如何加入以获取数据[重复]

mysql查询时如何去除重复数据

mysql 如何去除表连接查询出来的重复数据

MySQL 性能:加入与 WHERE [重复]