我有一张包含许多不同产品规格记录的表,因为它们有不同的颜色,产品在表中可能会出现多次。为了在屏幕上显示产品,我需要用黄色来选择它们的列表,但是如果黄色不存在,我需要蓝色,否则我不想要这个产品。在MySQL的所有记录组中选择一组记录中的特定记录
简化产品例如:
+----+--------+ | ID | NAME | +----+--------+ | 1 | Prod A | | 2 | Prod B | | 3 | Prod C | | 4 | Prod D | +----+--------+
简单求参数表:
+----+------------+--------+ | ID | ID_PRODUCT | COLOR | +----+------------+--------+ | 1 | 1 | BLUE | | 2 | 1 | YELLOW | | 3 | 2 | RED | | 4 | 2 | PINK | | 5 | 3 | BLUE | | 6 | 3 | GRAY | | 7 | 4 | YELLOW | +----+------------+--------+
预期结果:
+----+------------+--------+ | ID | ID_PRODUCT | COLOR | +----+------------+--------+ | 2 | 1 | YELLOW | | 5 | 3 | BLUE | | 7 | 4 | YELLOW | +----+------------+--------+
原始SQL这个例子:
CREATE TABLE `colors` ( `ID` int(11) NOT NULL, `ID_PRODUCT` int(11) DEFAULT NULL, `COLOR` varchar(16) DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `products` ( `ID` int(11) NOT NULL, `NAME` varchar(16) DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `colors` VALUES (1,1,'BLUE'),(2,1,'YELLOW'),(3,2,'RED'),(4,2,'PINK'),(5,3,'BLUE'),(6,3,'GRAY'),(7,4,'YELLOW'); INSERT INTO `products` VALUES (1,'Prod A'),(2,'Prod B'),(3,'Prod C'),(4,'Prod D');
我的英语理解能力不好,让我不能正确理解你对我接受答案的关注。事实上,在Darshan Mehta的回答中,身份证并不总是正确的。你的回答更加复杂但正确。 –