需求: 现有一个表tab,表中有两个字段,a和b,现在想查询时候添加一列c,并且值全部为1
SELECT T.*,1 as c FROM tab T;
上面是转自网上的
需求:根据用户id_查询3张表,数据返回给前端显示
下面是最后的sql语句 1011:为模拟用户ID
select i.id,i.created_at,i.address,i.cover_img,i.title,1 as from_table from 表A as i where user_id = 1011 union all select b.id,b.created_at,b.address,b.cover_img,b.title , 2 as from_table from 表B as b where user_id = 1011 union all select j.id,j.created_at,j.address,j.cover_img,j.title ,3 as from_table from 表C as j where user_id = 1011 order by created_at desc
用到上面的【查询时候添加一列c,并且值全部为1 】
下面是mysql UNION说明,,有一点要补充的:如果表结构不同,把要查询的列标出来且每个表都要有(不然报错):
这里的: i.id,i.created_at,i.address,i.cover_img,i.title
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
语法
MySQL UNION 操作符语法格式:
SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions] UNION [ALL | DISTINCT] SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions];参数
expression1, expression2, ... expression_n: 要检索的列。
tables: 要检索的数据表。
WHERE conditions: 可选, 检索条件。
DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。
ALL: 可选,返回所有结果集,包含重复数据。