sql - 我该如何编写这个 MySQL 查询来获取正确的信息? (子查询,多个子查询)

标签 sql mysql

这是我正在处理的查询:

SELECT `unitid`, `name` FROM apartmentunits
WHERE aptid = (
    SELECT `aptid` FROM rentconditionsmap WHERE rentcondid = 1 AND condnum = 1
)

我无法弄清楚如何编写此代码以添加更多租金条件限制器以进一步过滤此列表。

SELECT `aptid` FROM rentconditionsmap WHERE rentcondid = 1 AND condnum = 1

数据:

CREATE TABLE IF NOT EXISTS `rentconditionsmap` (
   `rcid` bigint(10) unsigned NOT NULL AUTO_INCREMENT, 
   `rentcondid` int(3) unsigned NOT NULL, 
   `condnum` tinyint(3) unsigned NOT NULL, 
   `aptid` bigint(10) unsigned DEFAULT NULL, 
   PRIMARY KEY (`rcid`), KEY `aptid` (`aptid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;

INSERT INTO `rentconditionsmap` 
  (`rcid`, `rentcondid`, `condnum`, `aptid`) 
VALUES 
  (1, 1, 1, 1), 
  (2, 2, 1, 1), 
  (3, 3, 0, 1), 
  (4, 4, 1, 1), 
  (5, 8, 0, 1);

CREATE TABLE IF NOT EXISTS `apartmentunits` (
  `unitid` bigint(10) NOT NULL AUTO_INCREMENT, 
  `aptid` bigint(10) NOT NULL, 
  `name` varchar(6) NOT NULL, 
  `verified` tinyint(1) NOT NULL DEFAULT '0', 
  `rentcost` int(4) unsigned DEFAULT NULL, 
  `forrent` tinyint(1) NOT NULL DEFAULT '0', 
  `unittypekey` varchar(2) DEFAULT NULL, 
  `sqft` smallint(6) DEFAULT NULL, 
  PRIMARY KEY (`unitid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=121 ;

INSERT INTO `apartmentunits` 
  (`unitid`, `aptid`, `name`, `verified`, `rentcost`, `forrent`, `unittypekey`, `sqft`) 
VALUES 
  (1, 1, '3', 1, 540, 0, '2B', NULL), 
  (2, 1, '5', 1, NULL, 0, '2B', NULL), 
  (3, 1, '7', 1, NULL, 0, '2B', NULL), 
  (53, 1, '1', 1, NULL, 0, '2B', NULL), 
  (54, 1, '2', 1, NULL, 0, '2B', NULL), 
  (55, 1, '4', 1, 570, 0, '2B', NULL), 
  (56, 1, '6', 1, NULL, 0, '2B', NULL), 
  (57, 1, '8', 1, NULL, 0, '2B', NULL), 
  (58, 1, '9', 1, NULL, 0, '2B', NULL), 
  (59, 1, '10', 1, NULL, 0, '2B', NULL), 
  (60, 1, '11', 1, NULL, 0, '2B', NULL);

最佳答案

正如 Eric J 在评论中所说:

Try changing = to IN

SELECT `unitid`, `name` FROM apartmentunits
WHERE `aptid` IN (
    SELECT `aptid` FROM rentconditionsmap WHERE rentcondid = 1 AND condnum = 1
)

关于sql - 我该如何编写这个 MySQL 查询来获取正确的信息? (子查询,多个子查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2381630/

相关文章:

sql - 是否为表中的每个外键隐式创建了一个非聚集索引?

sql - 如何在 SQL Server 2005 中读取 XML 数据

javascript - Node.js 中的 MySQL 问题 - 获取所有查询

c# - 使用 pivot 将行转换为列

sql - 简单的数据库规范化问题

PHP - MySQL IF( bool )条件

php - 如何在 jQuery 中使用 !important

php - 使用 php mysql 查询选择具有最高值的 5 列

PHP/MYSQL : less than or equal to 50 is displaying records in the hundreds?

mysql - 如何在没有嵌套查询的情况下在 MySQL 中执行组聚合?