[英]How to select using UNION all fields including NULL?
I use a query: 我使用查询:
SELECT idFavourite AS entity, 'favourite' AS type
FROM favourite
WHERE idCar = 1 AND idUser = 1
UNION
SELECT idLike AS entity, 'likes' AS type
FROM `likes`
WHERE idCar = 1 AND idUserLiked = 2
If second condition is not right, this query returns only one type
. 如果第二个条件不正确,则此查询仅返回一种
type
。 How I can get always two type
of both queries? 我怎样才能得到总有两个
type
都疑问?
New query: 新查询:
SELECT likes.idLike AS likes, favourite.idFavourite AS fav FROM favourite
LEFT JOIN `likes` ON (likes.idCar = favourite.idCar) AND (likes.idUserLiked = favourite.idUser) AND
likes.idCar = 1 AND likes.idUserLiked = 2
First, use union all
unless you want to incur the overhead of removing duplicates (which is not possible in this case). 首先,使用
union all
除非您要承担删除重复项的开销(在这种情况下是不可能的)。 You can do: 你可以做:
SELECT idFavourite AS entity, 'favourite' AS type
FROM favourite
WHERE idCar =1 AND idUser = 1
UNION ALL
SELECT idLike AS entity, 'likes' AS type
FROM `likes`
WHERE idCar = 1 AND idUserLiked = 2
UNION ALL
SELECT NULL, 'likes'
FROM (SELECT 1 as x) t
WHERE NOT EXISTS (SELECT 1 FROM likes WHERE idCar = 1 AND idUserLiked = 2);
Alternatively, if you only expect at most one row from the second subquery, then use aggregation: 另外,如果您只希望第二个子查询中最多包含一行,则使用聚合:
SELECT idFavourite AS entity, 'favourite' AS type
FROM favourite
WHERE idCar =1 AND idUser = 1
UNION ALL
SELECT MAX(idLike) AS entity, 'likes' AS type
FROM `likes`
WHERE idCar = 1 AND idUserLiked = 2;
An aggregation query with no GROUP BY
always returns one row. 没有
GROUP BY
的聚合查询始终返回一行。 In this case, entity
will be NULL
if the WHERE
clause filters out everything. 在这种情况下,如果
WHERE
子句过滤掉所有内容,则entity
将为NULL
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.