今天半夜想起来有个功能没做,然后大清早就爬起来写。可惜业务涉及新表和第三方二开的数据表,无奈负责持久层的同学还没起来,自己研究咯
先展示两个数据表结构
数据内容:
描述下持久层的业务需求:
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键上方的按
冶心·练体·得技