我使用的是我的SQL(最新版本(,我有下表:
CREATE TABLE COURSES (
IDCOURSE INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR (30) NOT NULL,
HOURS INT,
PRICE FLOAT (10,2) NOT NULL,
ID_PREREQ INT
);
ALTER TABLE COURSES ADD CONSTRAINT FK_PREREQ
FOREIGN KEY (ID_PREREQ) REFERENCES COURSES (IDCOURSE);
我想做的是:选择列NAME、HOURS、PRICE和ID_PREREQ AS REQUISITES。每当ID_PREREQ为NULL时;无请求";。如果是,那么我想读取关联的NAME列中的任何内容。
例如:
如果这是我的桌子:
IDCOURSE | NAME | HOURS | >|
---|---|---|---|
1 | 关系数据库 | 20 | 00.00|
2 | 商业智能高级数据库3编程 |
如果需要在课程中提取相应的先决条件,则需要应用SELF JOIN
操作。在连接类型中,可以使用LEFT JOIN
来保留没有先决条件的课程。然后COALESCE
函数将允许您用自己选择的字符串替换NULL值(如">NOREQUISITES"(。
SELECT c1.IDCOURSE,
c1.NAME,
c1.HOURS,
c1.PRICE,
COALESCE(c2.NAME, 'NO REQUISITES') AS REQUISITES
FROM COURSES c1
LEFT JOIN COURSES c2
ON c1.ID_PREREQ = c2.IDCOURSE
ORDER BY IDCOURSE
请在此处查看演示。
旁注:MySQL的IIF
函数名为IF
。