Mysql 如何为子查询添加值?
我有一个简单的疑问:Mysql 如何为子查询添加值?,mysql,sql,database,subquery,Mysql,Sql,Database,Subquery,我有一个简单的疑问: SELECT DISTINCT images.id FROM `images` WHERE `images`.`user_id` IN (SELECT following_id FROM `follows` WHERE `follows`.`follower_id` = 5717 AND `follows`.`accepted` = 1) ORDER BY id DESC LIMIT 1000 OFFSET 0 我想在子查询返回的
SELECT DISTINCT images.id
FROM `images`
WHERE `images`.`user_id` IN
(SELECT following_id
FROM `follows`
WHERE `follows`.`follower_id` = 5717
AND `follows`.`accepted` = 1)
ORDER BY id DESC LIMIT 1000
OFFSET 0
我想在子查询返回的值列表中附加一个值。因此,如果子查询返回:
23
59
14
77
我希望它是:
23
59
14
77
86
(请注意底部的额外86)。如果您始终希望添加86,则只需在子查询上使用UNION ALL,这将确保86始终包含在in子句子查询中:
SELECT DISTINCT spentits.id
FROM `spentits`
WHERE `spentits`.`user_id` IN
(SELECT following_id
FROM `follows`
WHERE `follows`.`follower_id` = 5717
AND `follows`.`accepted` = 1
UNION ALL
SELECT 86)
ORDER BY id DESC LIMIT 1000
OFFSET 0
如果始终希望添加86,则只需在子查询上使用UNION ALL,这将确保86始终包含在in子句子查询中:
SELECT DISTINCT spentits.id
FROM `spentits`
WHERE `spentits`.`user_id` IN
(SELECT following_id
FROM `follows`
WHERE `follows`.`follower_id` = 5717
AND `follows`.`accepted` = 1
UNION ALL
SELECT 86)
ORDER BY id DESC LIMIT 1000
OFFSET 0
您也可以将其作为第二条标准添加到WHERE子句中:
SELECT DISTINCT spentits.id
FROM `spentits`
WHERE `spentits`.`user_id` IN
(SELECT following_id
FROM `follows`
WHERE `follows`.`follower_id` = 5717
AND `follows`.`accepted` = 1)
OR `spentits`.`user_id` = 86
ORDER BY id DESC LIMIT 1000
OFFSET 0
您也可以将其作为第二条标准添加到WHERE子句中:
SELECT DISTINCT spentits.id
FROM `spentits`
WHERE `spentits`.`user_id` IN
(SELECT following_id
FROM `follows`
WHERE `follows`.`follower_id` = 5717
AND `follows`.`accepted` = 1)
OR `spentits`.`user_id` = 86
ORDER BY id DESC LIMIT 1000
OFFSET 0
。。。UNION SELECT 86
,如果你想要86在最后,即使它在结果集中(所以你会有两次):UNION ALL SELECT 86
为什么不附加42,这是所有问题的答案?@FabianBigler我说的是子查询…@piotrm yea除了join使它慢了十亿倍,而且它的表现力不如子查询。。。UNION SELECT 86
,如果你想要86在最后,即使它在结果集中(所以你会有两次):UNION ALL SELECT 86
为什么不附加42,这是所有问题的答案?@FabianBigler我说的是子查询…@piotrm yea除了join使它慢了十亿倍,而且它的表现力不如子查询库,正是我要找的!谢谢,正是我想要的!