Mysql 插入时SQL异或
如果我的MYSQL数据库中有三个表,并且希望将其中的两个表与一个表连接起来。这些桌子看起来像这样Mysql 插入时SQL异或,mysql,Mysql,如果我的MYSQL数据库中有三个表,并且希望将其中的两个表与一个表连接起来。这些桌子看起来像这样 CONNECTTABLE +----+-----------+---------+ | ID | search_id | room_id | +----+-----------+---------+ SEARCHTABLE +----+-----------+-----+ | ID | search_id | ... | +----+-----------+-----+ SEARCHTABLE
CONNECTTABLE
+----+-----------+---------+
| ID | search_id | room_id |
+----+-----------+---------+
SEARCHTABLE
+----+-----------+-----+
| ID | search_id | ... |
+----+-----------+-----+
SEARCHTABLE
+----+---------+-----+
| ID | room_id | ... |
+----+---------+-----+
是否可以通过MYSQL确保在CONNECTTABLE中,每个datarow中只有search\u id或room\u id不为null?如果我可以这样做,我怎么可以这样做
Valid rows:
+----+-----------+---------+
| ID | search_id | room_id |
+----+-----------+---------+
| 1 | 42 | NULL |
+----+-----------+---------+
| 2 | NULL | 1337 |
+----+-----------+---------+
Invalid row:
+----+-----------+---------+
| ID | search_id | room_id |
+----+-----------+---------+
| 3 | 42 | 17 |
+----+-----------+---------+
致以最良好的祝愿,
Gerrit您想要的被称为“检查约束”。不幸的是,MySQL不支持它们。好吧,它会让你定义它们,但实际上它不会检查它们。讨论如何使用触发器实现相同的功能。希望这有帮助
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
首先,不可能在数据库中添加两个同名的表。但我认为这只是虚拟的表名,对吗?试试这个:
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
你的要求对我来说毫无意义。你为什么要这样做?@Feysal OP可能想检查
CONNECTTABLE
中的ID
是否在这两个表中都不存在。谢谢你的回答,我已经编写了一个触发器:它对我有效。SELECT语句不是问题所在,我想确保插入的数据是有效的。只是为了绝对清楚,您是说在mySQL中检查是绝对无用的?正确。“已分析CHECK子句,但被所有存储引擎忽略。”来自