查询一个表(tb1)的列数和行数
SELECT COUNT(*) FROM information_schema. COLUMNS WHERE table_name = 'tb1';
SELECT COUNT(*) FROM database.tb1
查询一个数据库(database)中有多少表
SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES WHERE table_schema = 'database' GROUP BY table_schema;
查询一个数据库共多少字段
SELECT COUNT(column_name) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'database';
如图:
IF()函数
MySQL中的IF()函数作用类似于Java中的三目运算符
IF(condition, value_if_true, value_if_false)
参数 描述:
- condition 必须,判断条件
- value_if_true 可选,当条件为true值返回的值
- condition 可选,当条件为false值返回的值
举例:
case_status 字段有’曾被列入失信被执行人名单,现已移出’、‘已结案’、‘列入失信被执行人名单’三种取值,先要用IF将此字段提取成取值‘0’或者‘1’的dishonest_status 字段。
SELECT
base.report_id,base.credit_type,base.name,base.certificate_no,base.create_time,
force_execution.court_name,force_execution.cause,force_execution.register_date,
force_execution.result_type,force_execution.dishonest_status,force_execution.case_end_date,force_execution.apply_execution_object,force_execution.executed_object
FROM
(
SELECT distinct
t1.report_id,
t1.credit_type,
t1.name,
t1.certificate_no,
t1.create_time
FROM
gears.credit_base_info t1
where
t1.report_id is not null
) base # 投影的别名
left JOIN (
SELECT distinct
t3.report_id,
t3.court_name,
t3.cause,
t3.register_date,
t3.result_type,
IF(t3.case_status = '列入失信被执行人名单', '1','0') dishonest_status,
t3.case_end_date,
t3.apply_execution_object,
t3.executed_object
FROM
gears.pcredit_force_execution_record t3
) force_execution
ON base.report_id = force_execution.report_id
where
base.report_id is not null
日期条件的筛选
MySQL查询时间大于某天的数据
如查询数据生成时间大于2020/01/119这一天的数据
select * from credit_base where create_time>DATE_ADD('2020/01/19', INTERVAL -1 SECOND)
以上代码即:create_time>‘2020/01/18 23:59:59’
DATEADD(datepart, number, date)
datepart:指的是修改的类型,一般有YEAR,MONTH,DAY,HOUR,MINUTE,SECOND
number:修改的值,正数是未来的日子。负数是过去的日子
date:合法日期表达式
select * from credit_basewhere create_time>DATE_ADD(‘2020/01/18’, INTERVAL 1 DAY)
这种方式也可以查到,但没有排除当刚好有条记录是’2020/01/19 00:00:00’就查不到了。
查询表中id重复的数据
select * from ecredit_info where id in (select report_id from ecredit_info group by id having count(id)>1)
查询表中除了id列的其他列名
SELECT
CONCAT(' select ',GROUP_CONCAT(COLUMN_NAME),' from ', TABLE_NAME,' ;')
FROM information_schema.COLUMNS
WHERE table_name = 'xxxx'
AND TABLE_SCHEMA = 'ccms_xxx' and COLUMN_NAME != 'id';