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)