gpt4 book ai didi

php - 尝试通过比较不同的表从 SQL 查询中输出正确的值

转载 作者:可可西里 更新时间:2023-11-01 08:51:19 26 4
gpt4 key购买 nike

我是 SQL 的新手,需要有关如何使用正确查询完成此任务的帮助。

我有 2 个表需要使用。表“TB1”有:

id Name
1 bob
2 blow
3 joe

表“TB2”有:

compid property
1 bob
2 blow

我正在尝试获取“TB2”中缺少的 compid 并将其从“TB1”中插入

我正在做的查询是:

SELECT id, name from TB1, TB2 where id <> compid

我得到的是 Id 1 和 2 的 2 个输出,以及 id 3 的 3 个输出。通过使用 php:

for($i=0;$i <= mysql_num_rows($comp)-1; $i++)
{
echo mysql_result($comp, $i, 0)."<br>";


}

我期待输出 3 但得到的却是这个:

1
1
2
2
3
3
3

我知道它会比较表格中的所有行,但有没有办法实现我正在寻找的内容?

感谢您的宝贵时间。

最佳答案

您正在执行隐式笛卡尔 JOIN,这会导致每一行都与其他行相对。您需要指定两个表的 JOIN 属性。

使用隐式语法(不推荐):

SELECT id, name 
FROM TB1, TB2
WHERE id <> compid
AND TB1.Name = TB2.property <-- Column join

使用显式语法:

SELECT id, name
FROM TB1
JOIN TB2
ON TB2.property = TB1.Name <-- Column join
WHERE id <> compid

要实现您的目标,您需要具备以下条件:

SELECT TB1.id, TB1.name
FROM TB1
LEFT JOIN TB2
ON TB2.property = TB1.Name
WHERE TB2.compid IS NULL

See it in action

最佳做法是始终为您选择的列添加别名以防止歧义。

关于php - 尝试通过比较不同的表从 SQL 查询中输出正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13689378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com