项目____DUPLICATE、int/varchar、根据多字段排序、根据查询结果反查

前提:MyBatis框架下! 利用框架写入与直接在sqlyog中写入结果不同!


duplicate:

INSERT INTO wc_plants
            (
             id,
             name,
             seed_img,
             sprout_img,
             growup_img,
             ripe_img,
             sprout_day,
             growup_day,
             ripe_day
             )
		VALUES (
		#{id},		
		#{name},
		#{seed_img},
		#{sprout_img},
		#{growup_img},
		#{ripe_img},
		#{sprout_day},
		#{growup_day},
		#{ripe_day})
		ON DUPLICATE KEY UPDATE NAME=VALUES(NAME), seed_img=VALUES(seed_img),sprout_img=VALUES(sprout_img),growup_img=VALUES(growup_img),ripe_img=VALUES(ripe_img),sprout_day=VALUES(sprout_day),growup_day=VALUES(growup_day),ripe_day=VALUES(ripe_day);
Tip:设置duplicate后,需要设置unique索引。当insert的字段中包含unique索引的字段,并且此字段的存储内容与表中的相冲突就会更新DUPLICATE KEY UPDATE后面的内容。


int  varchar:

设置

id为int型 

name为varchar型

day为int型 且默认值设置为0

当id没有传入值时 将会报错Incorrect integer value: '' for column 'id' at row 1

当day没有传入值时不会报错,day值为0

当name没有传入值时不会报错,name值为null


下次表中如果需要设置为int型字段,需要在存储值前判断,赋值null后可以顺利存储。


根据多字段排序:

SELECT * FROM wc_fields ORDER BY usable DESC ,  id DESC 


根据查询结果反查:

SELECT wc_fields.id,newplants.plantsname1,wc_fields.plant1_time,newplants.plantsname2,wc_fields.plant2_time,newplants.plantsname3,wc_fields.plant3_time,wc_fields.usable,
member_info.name,member_info.openid 
FROM wc_fields LEFT JOIN member_info ON wc_fields.id=member_info.field_id  
LEFT JOIN 
(SELECT plants1.id plantsid,plants1.name1 plantsname1,plants2.name2 plantsname2,plants3.name3 plantsname3 FROM (SELECT wc_fields.id id,NAME AS name1 FROM wc_fields LEFT JOIN wc_plants ON wc_fields.plant1=wc_plants.id ) AS plants1 
LEFT JOIN (SELECT wc_fields.id id,NAME AS name2 FROM wc_fields LEFT JOIN wc_plants ON wc_fields.plant2=wc_plants.id) AS plants2 ON plants1.id=plants2.id
LEFT JOIN (SELECT wc_fields.id id,NAME AS name3 FROM wc_fields LEFT JOIN wc_plants ON wc_fields.plant3=wc_plants.id) AS plants3 ON plants1.id=plants3.id) AS newplants ON wc_fields.id=newplants.plantsid
ORDER BY usable DESC ,  wc_fields.id 

需求:根据土地表,作物表,会员信息表查处土地作物名称和所有者。土地表中存的是作物id。本来打算从土地表中查处土地信息,在action内遍历查询每块土地对应的作物id的作物名称。现在这里的解决办法是把每块土地某个作物的id与名称根据id查询出来left join成一张新表然后再从大表中查询出所需要信息。

通过SQL语句解决了:需要根据第一次查询结果再次反查的问题。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值