Mysql i';m使用两个查询有没有办法使它成为一个查询

Mysql i';m使用两个查询有没有办法使它成为一个查询,mysql,sql,database,Mysql,Sql,Database,这是我的情况, 我正在从superadmin表中获取id,其中role=2 像这样 SELECT id FROM superadmin WHERE role='2' SELECT status FROM categorydata WHERE users='id' // above id on each iteration 假设我能得到10张唱片 id ---------------- 3 4 6 8 10 14

这是我的情况,

我正在从
superadmin
表中获取
id
,其中
role=2

像这样

SELECT id FROM superadmin WHERE role='2'
SELECT status FROM categorydata WHERE users='id'  // above id on each iteration
假设我能得到10张唱片

    id
----------------   
    3

    4

    6

    8

    10

    14

    16
    .
    .
我需要像这样将它们传递到第二个表中

SELECT status FROM categorydata WHERE users='id'  // above id on each iteration
以下是我的PHP代码:

$query_super_admin = $obj->queryAll("SELECT id FROM superadmin WHERE role='2'");
  foreach($query_super_admin['results'] as $result){
            $user_id = $result['id'];
             $category_related = $obj->queryAll("SELECT status FROM categorydata WHERE users='".$user_id."'"); 

// result data

}

问题:我想用
sql实现这一点,这可能吗?

您可以使用
在(…)的何处


您可以在(…)中使用


试试这个:我认为在这种情况下,
内部联接
的性能会更好

SELECT c.status
from superadmin s
inner join categorydata c on s.id = c.users
where s.role='2'

试试这个:我认为在这种情况下,
内部联接
的性能会更好

SELECT c.status
from superadmin s
inner join categorydata c on s.id = c.users
where s.role='2'

以下查询将检索用户及其状态:

SELECT s.id, c.status
FROM superadmin s
LEFT JOIN categorydata c ON s.id = c.users
WHERE s.role = 2
ORDER BY s.id;
我使用左连接而不是像Suraz这样的内部连接,因为您可能对获取没有关联状态的用户感兴趣

然后在PHP中,要获得与初始代码相同的行为,可以执行以下操作:

$query = <<<EOQ
SELECT s.id, c.status
FROM superadmin s
LEFT JOIN categorydata c ON s.id = c.users
WHERE s.role = 2
ORDER BY s.id;
EOQ;

$query_super_admin = $obj->queryAll($query);
$cur_id = -1;
foreach($query_super_admin['results'] as $result) {
  if ($result['id'] != $cur_id) {
    // This is a new user id
    // Do whatever you want here, like printing user id, name, etc.

    $cur_id = $result['id'];
  }

  if (!$result['status']) {
    continue; // No status associated to this user
  }

  // Do whatever you want here, like printing status
}

$query=以下查询将检索用户及其状态:

SELECT s.id, c.status
FROM superadmin s
LEFT JOIN categorydata c ON s.id = c.users
WHERE s.role = 2
ORDER BY s.id;
我使用左连接而不是像Suraz这样的内部连接,因为您可能对获取没有关联状态的用户感兴趣

然后在PHP中,要获得与初始代码相同的行为,可以执行以下操作:

$query = <<<EOQ
SELECT s.id, c.status
FROM superadmin s
LEFT JOIN categorydata c ON s.id = c.users
WHERE s.role = 2
ORDER BY s.id;
EOQ;

$query_super_admin = $obj->queryAll($query);
$cur_id = -1;
foreach($query_super_admin['results'] as $result) {
  if ($result['id'] != $cur_id) {
    // This is a new user id
    // Do whatever you want here, like printing user id, name, etc.

    $cur_id = $result['id'];
  }

  if (!$result['status']) {
    continue; // No status associated to this user
  }

  // Do whatever you want here, like printing status
}
$query=