gpt4 book ai didi

mysql - 联合所有而不是在

转载 作者:行者123 更新时间:2023-11-30 00:04:26 25 4
gpt4 key购买 nike

我想从 module_idx 和 module_idx_pool 表中选择两个表中没有相同 listid 列的所有行。

如果 listid 在两个表中,我只想从 module_idx 表中选择行。

SELECT * FROM module_idx    
UNION ALL
SELECT * FROM module_idx_pool WHERE listid NOT IN ( SELECT listid FROM module_idx )

此语句仅返回 module_idx 中的行,而不返回其他行。

CREATE TABLE IF NOT EXISTS `module_idx` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`umodule` int(10) DEFAULT '0',
`accid` int(10) DEFAULT '0',
`images` text,
`address` varchar(60) DEFAULT '',
`city` varchar(30) DEFAULT '',
`county` varchar(30) DEFAULT '',
`state` varchar(20) DEFAULT '',
`zip` varchar(12) DEFAULT '',
`price` varchar(20) DEFAULT '',
`listid` varchar(25) DEFAULT '',
`details` text,
`latlng` varchar(30) DEFAULT '',
`baths` int(11) DEFAULT '0',
`bedrooms` int(1) DEFAULT '0',
`sqft` int(6) DEFAULT '0',
`acres` int(6) DEFAULT '0',
`proptype` varchar(30) DEFAULT '',
`detailsurl` varchar(40) DEFAULT '',
`content` text,
`status` varchar(20) DEFAULT 'active',
`type` varchar(10) DEFAULT 'feat',
`subdivision` varchar(80) DEFAULT NULL,
`extra` text,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1501 ;

module_idx_pool的表结构与上面相同

最佳答案

原因可能是由于 NULL 值。您可以通过两种方式解决此问题:

SELECT * FROM module_idx    
UNION ALL
SELECT *
FROM module_idx_pool
WHERE listid NOT IN (SELECT listid FROM module_idx WHERE listid is not null)

或者,最好的方法是使用not contains:

SELECT * FROM module_idx    
UNION ALL
SELECT *
FROM module_idx_pool ip
WHERE NOT EXISTS (SELECT 1 FROM module_idx i WHERE i.listid = ip.listid);
只要子查询具有 NULL 值,

NOT IN 就会返回 NULL。从处理 NULL 值的角度来看,这是有意义的——因为您不知道给定值是否在列表中。然而,这有点违反直觉。 NOT EXITS 具有忽略 NULL 值的更直观行为。

关于mysql - 联合所有而不是在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24713648/

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