我想比较 2 个表之间的 mysql id 并显示匹配 id echo yes 的所有名称。
我有 2 个表,一个是酒,另一个是用户。我将使用餐酒中的唯一 ID 列。但是在用户表中,我将使用不唯一的 wine_id 列。
这是 mysql 代码,将从餐 table 酒和用户中获取匹配的 id。
$sql="SELECT id FROM `winelist` w WHERE page = 'Chardonnay USA' and
EXISTS(
SELECT wine_id FROM `user_wine_history` u WHERE user_name = 'bon'
AND u.wine_id = w.id);";
$result= mysql_query($sql);
while($data= mysql_fetch_array($result)) {
}
这是列出wine中所有名称的代码。
$sql2 ="SELECT id, name, year, grape, price, instock FROM winelist WHERE page ='Chardonnay USA';";
$result2 = mysql_query($sql2);
while($data2 = mysql_fetch_array($result2)) {
}
我尝试在 listing name while 循环中使用此代码,但没有成功。
if($data2['id'] == $data['id']) {
echo "yes";
}
else
{
echo "fail";
}
有人可以给我一些建议如何解决这个问题吗? 提前谢谢你。
最佳答案
您可以改用 LEFT JOIN
并在查询中使用 CASE
表达式执行此操作,例如:
SELECT
w.id , w.page, w.name, w.year,
u.user_name, u.id user_id, u.wine_id uwine_id,
CASE
WHEN u.id IS NOT NULL THEN 'Yes'
ELSE 'No'
END AS IsMatching
FROM `winelist` w
LEFT JOIN `user_wine_history` u ON w.id = u.wine_id
AND w.page = 'Chardonnay USA'
AND u.user_name = 'bon';
这将选择一个新列 IsMatching
,其值为 yes
或 no
以指示 Wine id
是否为是否在其他表中找到。
关于php - 比较 2 个表之间的 mysql id 并显示所有匹配 id echo yes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20824658/