如果我的MYSQL数据库中有三个表,并且想要将这个表中的两个连接到一个表。表格看起来像这样
CONNECTTABLE
+----+-----------+---------+
| ID | search_id | room_id |
+----+-----------+---------+
SEARCHTABLE
+----+-----------+-----+
| ID | search_id | ... |
+----+-----------+-----+
SEARCHTABLE
+----+---------+-----+
| ID | room_id | ... |
+----+---------+-----+
是否有可能通过MYSQL确保在CONNECTTABLE中,每个数据流中只有search_id或room_id不为空?如果我能这样做,我该怎么办?
Valid rows:
+----+-----------+---------+
| ID | search_id | room_id |
+----+-----------+---------+
| 1 | 42 | NULL |
+----+-----------+---------+
| 2 | NULL | 1337 |
+----+-----------+---------+
Invalid row:
+----+-----------+---------+
| ID | search_id | room_id |
+----+-----------+---------+
| 3 | 42 | 17 |
+----+-----------+---------+
祝你好运, 格里特
答案 0 :(得分:0)
您想要的是“CHECK约束”。不幸的是,MySQL不支持它们。好吧,它会让你定义它们,但它实际上不会检查它们。 This article讨论了使用触发器实现相同的功能。
答案 1 :(得分:0)
希望这会有所帮助
select * from tableName where search_id is null && room_id is not null
union
select * from tableName where search_id is not null && room_id is null
答案 2 :(得分:0)
首先,无法在数据库中添加两个具有相同名称的表。但我认为这只是虚拟的桌面游戏吧?试试这个:
SELECT a.ID, b.Search_ID, c.Room_ID
FROM ConnectTable a LEFT JOIN SearchTableA b
ON a.ID = b.ID
LEFT JOIN SearchTableB c
ON a.ID = c.ID
WHERE b.ID IS NULL OR
c.ID IS NULL