Mysql 带有子查询且条件为空的SQL

Mysql 带有子查询且条件为空的SQL,mysql,sql,subquery,Mysql,Sql,Subquery,我希望有人能就问题提出建议 SELECT sms.id FROM sms INNER JOIN screens ON sms.screen_id = screens.id WHERE screens.experience_id = '108'; 及 。。。返回一个空行,但有些行应该返回 为了澄清 SELECT id FROM sms 。。。返回SMS中的所有行 SELECT id FROM sms WHERE screen_id IN (SELECT id FROM screens) 。。

我希望有人能就问题提出建议

SELECT sms.id FROM sms INNER JOIN screens ON sms.screen_id = screens.id WHERE screens.experience_id = '108';

。。。返回一个空行,但有些行应该返回

为了澄清

SELECT id FROM sms
。。。返回SMS中的所有行

SELECT id FROM sms
WHERE screen_id IN (SELECT id FROM screens)
。。。返回SMS和中的所有行

SELECT id FROM screens WHERE experience_id = 108
。。。返回具有该id的屏幕中的所有行

SQL来生成表

    CREATE TABLE IF NOT EXISTS `screens` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) NOT NULL,
  `device_id` int(11) NOT NULL,
  `type` varchar(32) NOT NULL,
  `description` text NOT NULL,
  `position` int(11) NOT NULL,
  `experience_id` int(11) NOT NULL,
  `image` varchar(512) NOT NULL,
  `url` varchar(512) NOT NULL,
  `persona_id` int(11) NOT NULL,
  `socialPost` text NOT NULL,
  `socialLinkHeadline` varchar(512) NOT NULL,
  `socialLinkDescription` text NOT NULL,
  `socialLink` varchar(512) NOT NULL,
  `socialAction` varchar(64) NOT NULL,
  `bgcolor` varchar(16) NOT NULL DEFAULT '#fff',
  `created` datetime NOT NULL,
  `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `user_id` int(11) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=472 ;


CREATE TABLE IF NOT EXISTS `sms` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `source` varchar(16) NOT NULL,
  `content` text NOT NULL,
  `position` int(11) NOT NULL,
  `screen_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;
下面是我运行这些查询进行验证的GIF:


我不知所措,可以看出人们无法复制,谢谢

我不知道您的查询有什么问题,但您也可以使用join来完成

SELECT sms.id FROM sms INNER JOIN screens ON sms.screen_id = screens.id WHERE screens.experience_id = '108';

你的查询很好,这是证据

DROP TABLE IF EXISTS SMS,SCREENS;
CREATE TABLE SMS(ID INT, SCREEN_ID INT);
CREATE TABLE SCREENS(ID INT, EXPERIENCE_ID INT);

INSERT INTO SMS VALUES (1,1),(2,2);
INSERT INTO SCREENS VALUES(1,108),(2,100);

SELECT id FROM sms
WHERE screen_id IN (SELECT id FROM screens WHERE experience_id = 108 );

+------+
| id   |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

假设我的数据模型和你的相同

添加一些示例表数据和预期结果-作为格式化文本,而不是图像。也许可以在Join上阅读。我已经在帖子中添加了更多有用的信息,谢谢。它不起更多作用,正如我上面概述的那样。我不明白为什么会这样。注释中的字符空间不足,无法粘贴到用于创建表的SQL代码中。我会继续尝试,谢谢如果运行查询:我已经将上下文添加到原始PostThank,我在那里使用您的查询得到相同的结果。我会继续调查的,谢谢
DROP TABLE IF EXISTS SMS,SCREENS;
CREATE TABLE SMS(ID INT, SCREEN_ID INT);
CREATE TABLE SCREENS(ID INT, EXPERIENCE_ID INT);

INSERT INTO SMS VALUES (1,1),(2,2);
INSERT INTO SCREENS VALUES(1,108),(2,100);

SELECT id FROM sms
WHERE screen_id IN (SELECT id FROM screens WHERE experience_id = 108 );

+------+
| id   |
+------+
|    1 |
+------+
1 row in set (0.00 sec)