Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何为子查询添加值?_Mysql_Sql_Database_Subquery - Fatal编程技术网

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使它慢了十亿倍,而且它的表现力不如子查询库,正是我要找的!谢谢,正是我想要的!