sql中如何匹配两个表的列

我有这个代码


$db = \Config\Database::connect();


$query = $db->query("select * from g WHERE g_status = '0' ORDER BY g_date ASC Limit 10;");

foreach ($query->getResult() as $g) {

    $g_amount = $g->g_amount;

 }


$query2 = $db->query("select * from g WHERE p_status = '0' ORDER BY p_date ASC Limit 10;");

foreach ($query2->getResult() as $p) {

    $p_amount = $p->p_amount;

 }


if($p_amount ==  $g_amount){


echo "do something";


}else{


echo "No match";

}

在这里,我尝试在表 g 和表 p 之间进行匹配...如果表 g 中的任何列 == 表 p 中的任何列,无论列数如何,请执行某些操作,但它总是回显“不匹配”


我设置了“Limit 10”,以防表中的行数较多,它只会与“ordering”命令匹配前 10 行。


请我需要一些帮助。


呼啦一阵风
浏览 130回答 2
2回答

慕沐林林

首先,以数组形式获取数据$db = \Config\Database::connect();$query = $db->query("select * from g WHERE g_status = '0' ORDER BY g_date ASC Limit 10;");$g_results = $query->getResult('array'); $g_amounts = array_column($g_results,'g_amount');$query2 = $db->query("select * from g WHERE p_status = '0' ORDER BY p_date ASC Limit 10;");$p_results = $query2->getResult('array'); $p_amounts = array_column($p_results,'p_amount');foreach(array_intersect($g_amounts,$p_amounts) as $amount){   echo "do something";}

炎炎设计

为什么不使用 aJOIN看看它是否返回一些东西?不确定我的语法是否正确,我不经常进行 JOIN:SELECT * FROM g g_table JOIN p p_table ON g_table.g_amount = p_table.p_amount WHERE g_table.status = '0' AND p_table.status = '0'
打开App,查看更多内容
随时随地看视频慕课网APP