查询的总结:
一般查询之前需要对字段加索引,还有要优化,需要用到其他表,要做关联,现在有左连接,右连接,还有内连接
下面是一些连接的区别,大家认真看,
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行
还有一些总结:
比如那个sql的截取字段和那个正则表达式的
我这变就做身份证的:
下面是我写的一小点sql:
下面标红色的就是用正则表达式,查询的,还有字段截取(substr()这个也很重要)。
SELECT
a.orgcode AS orgcode,
a.departdate AS departdate,
a.routecode AS routecode,
a.routename AS routename,
a.totalnum AS totalnum,
a.type AS type,
NOW() AS createtime,
NOW() AS updatetime
FROM
(
SELECT
ss.departorgcode AS orgcode,
ss.departdate AS departdate,
ss.routecode AS routecode,
ss.routename AS routename,
count(*) AS totalnum,
CASE WHEN SUBSTR(remark, 1, 18) REGEXP '[0-9]{18}|[0-9]{17}X|[0-9]{15}' = 1 THEN
1
ELSE
0
END AS type
FROM
a ss
WHERE 1=1
-- AND ss.departorgcode=
AND ss.ticketstatus in (0,3)
AND DATE_FORMAT(ss.departdate,'%Y-%m-%d') BETWEEN :departdate_s
AND :departdate_e
GROUP BY
ss.departorgcode,
ss.departdate,
ss.routecode,
ss.routename
) AS a
这个sql 的具体也很简单,估计也能看懂,所以不用多解释。
具体的比较杂,请见谅,我是见到啥问题解决的,然后总结的,方便以后自己回顾,希望能给大家一些借鉴。
还有一些总结:
比如那个sql的截取字段和那个正则表达式的
我这变就做身份证的:
下面是我写的一小点sql:
下面标红色的就是用正则表达式,查询的,还有字段截取(substr()这个也很重要)。
SELECT
a.orgcode AS orgcode,
a.departdate AS departdate,
a.routecode AS routecode,
a.routename AS routename,
a.totalnum AS totalnum,
a.type AS type,
NOW() AS createtime,
NOW() AS updatetime
FROM
(
SELECT
ss.departorgcode AS orgcode,
ss.departdate AS departdate,
ss.routecode AS routecode,
ss.routename AS routename,
count(*) AS totalnum,
CASE WHEN SUBSTR(remark, 1, 18) REGEXP '[0-9]{18}|[0-9]{17}X|[0-9]{15}' = 1 THEN
1
ELSE
0
END AS type
FROM
a ss
WHERE 1=1
-- AND ss.departorgcode=
AND ss.ticketstatus in (0,3)
AND DATE_FORMAT(ss.departdate,'%Y-%m-%d') BETWEEN :departdate_s
AND :departdate_e
GROUP BY
ss.departorgcode,
ss.departdate,
ss.routecode,
ss.routename
) AS a
这个sql 的具体也很简单,估计也能看懂,所以不用多解释。