comcn 发表于 2022-9-7 14:38

mysql多表查询求助

本帖最后由 comcn 于 2022-9-7 15:00 编辑

order表是订单表,记录用户是否购买某个资源,codes是资源表


我的mysql语句:
SELECT * FROM `demo_codes` WHERE id in (SELECT codeid FROM demo_order)
这个语句只能查出codes表所有字段,我想要把order表的字段也查出来了(okey,userid)
该怎么写呢?


TaJ 发表于 2022-9-7 14:47

蹲一手,有大佬出没的话记得喊一声

神幻静 发表于 2022-9-7 14:54

俩表关联,条件用这个,别用in了
demo_order.codeid = demo_codes.id

yiminglian 发表于 2022-9-7 14:55

SELECT * FROM `demo_codes` left join`demo_order` on `demo_codes`.id=`demo_order`.codeid

hanzj06 发表于 2022-9-7 14:56

SELECT dc.*, do.* FROM demo_codes dc LEFT JOIN demo_order do ON dc.id = do.codeid ;
SELECT dc.*, do.* FROM demo_codes dc RIGHT JOIN demo_order do ON dc.id = do.codeid ;
SELECT dc.*, do.* FROM demo_codes dc INNER JOIN demo_order do ON dc.id = do.codeid ;
SELECT dc.*, do.* FROM demo_codes dc FULL OUTER JOIN demo_order do ON dc.id = do.codeid ;

不同的语法对应不同的效果

ytw6176 发表于 2022-9-7 14:58

select a.*,b.id as order_id,b.okey fromdemo_codes as a left join demo as b on a.id = b.codeid

comcn 发表于 2022-9-7 15:00

hanzj06 发表于 2022-9-7 14:56
SELECT dc.*, do.* FROM demo_codes dc LEFT JOIN demo_order do ON dc.id = do.codeid ;
SELECT dc.*, do ...

谢谢, RIGHT JOIN 解决了, INNER JOIN之前试过,发现不对,左右连接就没试{:301_995:}

lsy_loren 发表于 2022-9-7 15:12

select t0.*, t1.*
from demo_order t0
left join demo_codes t1 on t1.id = t0.codeid

coolcalf 发表于 2022-9-7 16:13

虽然我们可以用 LEFT JOIN 进行联表查询,你掌握这一基本方法没问题。
但实际使用中,mysql的联表查询相当的慢~
所以,要避免联表查询。
而使用.net 6进行开发时,推荐使用sqlsugar这个利器,你几乎可以百分百不用写sql语句。

不夏流年 发表于 2022-9-7 16:31

coolcalf 发表于 2022-9-7 16:13
虽然我们可以用 LEFT JOIN 进行联表查询,你掌握这一基本方法没问题。
但实际使用中,mysql的联表查询相当 ...

不写sql后期维护咋死的都不清楚
页: [1] 2 3
查看完整版本: mysql多表查询求助