将查询结果传递到另一个查询

时间:2018-03-29 05:27:33

标签: php mysql sql php-mysqlidb

我需要运行如下的查询

SELECT  `loginname`, `id`, `locality`, `wherefrom` 
FROM `Volley` JOIN `register` ON loginname=username 
WHERE CONCAT_WS('', wherefrom,locality) LIKE '%$search%'

从这个结果我需要获取id并将其传递给另一个查询以检查该ID是否存在于另一个表中,如下所示。

SELECT IF(EXISTS(SELECT * 
                 FROM `likes` 
                 WHERE Volleyid = '20'),1,0)

我可以将它合并为一个查询吗?对于第一个,我可能会获得更多的1行。我尝试将第一个查询的结果导入数组,但我无法从数组中获取该特定值。

$data = array();

for ($x = 0; $x < mysqli_num_rows($query1); $x++)
{
 $data[] = mysqli_fetch_assoc($query1);
}

3 个答案:

答案 0 :(得分:0)

SELECT IF(EXISTS(SELECT * From 
(
SELECT  `loginname`,
        `id`,
        `locality`,
        `wherefrom`,
         Volleyid  
         FROM `Volley` 
JOIN `register` 
ON loginname=username 
WHERE CONCAT_WS('', wherefrom,locality) LIKE '%$search%'
) AS T1
WHERE Volleyid = '20'),1,0)

答案 1 :(得分:0)

你可以使用带有IN子句的子查询(我认为你的内容是Volleyid它等于id):

SELECT IF(EXISTS(SELECT * 
                 FROM `likes` 
                 WHERE Volleyid IN 
                      (SELECT  `id` 
                       FROM `Volley` JOIN `register` ON loginname=username 
                       WHERE CONCAT_WS('', wherefrom,locality) LIKE '%$search%')),1,0)

答案 2 :(得分:0)

如果您想在第一个查询中获取loginnameidlocalitywherefrom列以及针对表{{1}检查的1或0标记在单个结果集中。您可以编写如下所示的查询:

likes