mysql - 我必须通过从 SQL 表中检索来过滤记录。我希望 sql 中我的表列中同一字段中的值不再显示
问题描述
我不能这样做,请帮忙。在我在下面编写的代码中,程序 id 1 的 Specialty 中有两个值。那么有没有一种方法可以过滤,以便过滤结果中不再显示该值,即此处指定的免费午餐。在过滤时,当我从数据库中检索时,我得到如下所示的复选框。
免费一餐,免费午餐
b 免费午餐
c 免费晚餐
我想要只显示免费餐点
INSERT INTO `programs` (`ProgramID`, `UserID`,`Speciality`) VALUES
(1, 'huy45', 'Free meal, Free lunch'),
(2, 'ga32','Free lunch'),
(3, 'sharvar3','Free Dinner'),
解决方案
你的表中有重复的信息,你不想要它。干燥 !.
我会使用另一个表来存储专业,例如:
专业
id | name
----+-------------
1 | Free meal
2 | Free lunch
3 | Free dinner
因此,您可以轻松地使用外键将此类信息存储在表中programs
接下来,您不想存储序列化信息。这违背了使用 RDBMS 的目的。
我会programs
像这样构造表格:
ProgramID | UserID | SpecialityID
-----------+------------+--------------
1 | 'huy45' | 1
1 | 'huy45' | 2
2 | 'ga32' | 2
3 | 'sharvar3' | 3
要检索ProgramID
和专业名称UserID
,您可以使用以下查询:Speciality
'Free meal'
SELECT p.`ProgramID`,
p.`UserID`,
s.`name` AS "Speciality Name"
FROM `programs` p
INNER JOIN `Speciality` s
ON p.SpecialityID = s.id
WHERE s.`name` = 'Free lunch';
架构(MySQL v5.7)
CREATE TABLE Speciality (
`id` INTEGER,
`name` VARCHAR(11)
);
INSERT INTO Speciality
(`id`, `name`)
VALUES
(1, 'Free meal'),
(2, 'Free lunch'),
(3, 'Free dinner');
CREATE TABLE programs (
`ProgramID` INTEGER,
`UserID` VARCHAR(10),
`SpecialityID` INTEGER
);
INSERT INTO programs
(`ProgramID`, `UserID`, `SpecialityID`)
VALUES
(1, 'huy45', 1),
(1, 'huy45', 2),
(2, 'ga32', 2),
(3, 'sharvar3', 3);
查询 #1
SELECT p.`ProgramID`,
p.`UserID`,
s.`name` AS "Speciality Name"
FROM `programs` p
INNER JOIN `Speciality` s
ON p.SpecialityID = s.id
WHERE s.`name` = 'Free lunch';
| ProgramID | UserID | Speciality Name |
| --------- | ------ | --------------- |
| 1 | huy45 | Free lunch |
| 2 | ga32 | Free lunch |
推荐阅读
- google-cloud-sql - 错误:(gcloud.sql.export.sql)HTTPError 409:操作失败,因为另一个操作已经在进行中
- c# - 车辆抽搐
- sapui5 - 主题“疑难解答”在浏览器控制台内无响应
- javascript - 蒙皮网格上的three.js raycast
- python - nn.Linear 应该是不匹配的,但它工作成功
- python - Instagram Scraping:我如何单击并按住一个元素,然后使用另一个给定功能释放?
- quickbooks - 如果我在簿记员处理 Quickbooks 时查询数据(以编程方式)会发生什么?
- computational-geometry - 解析几何,对三角形的顶点进行排序以捕获短边和第二排序边
- javascript - 如何清除 Vue.js 中单击 (x) 按钮时的选择选项?
- typescript - Typescript 从具有泛型类型的对象索引调用函数