今天半夜想起来有个功能没做,然后大清早就爬起来写。可惜业务涉及新表和第三方二开的数据表,无奈负责持久层的同学还没起来,自己研究咯
先展示两个数据表结构


数据内容:


描述下持久层的业务需求:
A表是用于记录选择的B表的某几行数据的内容,也就是类似于B表再加一个is_select字段用于记录选择。目前由于不方便修改B表的结构,用两张表来实现
Thinking
前段时间见过负责持久层的同学用IF关键字来代替一个字段判断内容,这次应该也是一样的情况
Doing
搞了一会,完成了:

也就是在A表中选择了的B的数据后面都加上了is_select然后判断是否取出了内容
SQL
SELECT
B.id,
B.content,
IF((SELECT `select` FROM A WHERE `select`=B.id),1,0) AS is_select
FROM A,B
GROUP BY B.id
SQL语句的IF(expr1,expr2,expr3)关键字中的expr1作为表达式当返回值为TRUE或者expr1 <> 0 and expr1 <> NULL时返回expr2否则返回expr3
那么我在上条sql中就没有使用=运算符,而是直接取了A表的select字段,利用默认的是否为空来判断返回1/0,然后将列取名为is_select
ps:当sql关键字作为字段名取值时,需要在两边加上反引号 ` 也就是大键盘上1按键左边,TAB键上方的按