gpt4 book ai didi

php - mysql子查询问题

转载 作者:行者123 更新时间:2023-11-29 06:18:26 24 4
gpt4 key购买 nike

我正在为 MySQL 子查询摸不着头脑。只是在抓了几个多小时后,我才将其发布在 SO 中。所以这里是:

$query_1 = "SELECT * 
FROM table_new
WHERE table_new.NAME NOT IN ('text I know does not exist') ";

$query_2 = "SELECT *
FROM table_new,
table_old
WHERE table_new.NAME = table_old.NAME ";

$query_3 = "SELECT *
FROM table_new
WHERE table_new.NAME NOT IN (SELECT *
FROM table_new,
table_old
WHERE table_new.NAME = table_old.NAME) ";

问题是这样的:
$query_1 和 $query_2 工作。但是当我将它们组合到 $query_3 中时,它不起作用。

有什么想法吗?

最佳答案

用途:

SELECT * 
FROM table_new
WHERE table_new.NAME NOT IN (SELECT table_old.NAME
FROM table_old)

标准 SQL 只允许在 IN 子句中进行一列与列的比较 - 您不能在 IN 子句中使用 SELECT *,因为不清楚哪些列值将与外部查询进行比较。然而,据我所知,MySQL 是唯一支持元组的。

还有其他编写查询以获得等效结果的方法:

SELECT x.* 
FROM TABLE_NEW x
WHERE NOT EXISTS (SELECT NULL
FROM TABLE_OLD x
WHERE y.NAME = x.NAME)

...或:

   SELECT x.* 
FROM TABLE_NEW x
LEFT JOIN TABLE_OLD y ON y.NAME = x.NAME
WHERE y.column_in_table_old IS NULL

哪一个性能最好取决于比较的列是否可为空。 For more info, see this page .

关于php - mysql子查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5162647/

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