【发布时间】:2020-01-03 18:45:01
【问题描述】:
我有一个有两个表的 mysql 数据库:
table1:
id, stuff, more_stuff, something
table2:
id, stuff, more_stuff, something, even_more
由于安全/可靠性原因,表 1 和表 2 的 id 是不相交的集合非常重要。这意味着table1.id 永远不会是table2.id。
编辑:我不知道 id=given_id 在两个表中的哪一个为真。
现在我想select * from table1 or table2 where id=given_id。这意味着只有一个表有一行 id=given_id,我希望返回该行。我不能用 UNION 做到这一点,因为我的两个表长度不同。
当然我可以用两个语句来做到这一点,但这需要我对数据库运行两个查询。
有没有办法从两个表中选择一行,具体取决于它在表中的位置?
【问题讨论】:
-
联合所有表格。
-
那么对应的错误是:The used SELECT statements have a different number of columns
-
添加一个虚拟
null作为table1选择的最后一列。 -
那么算了吧。这个安全原因听起来很荒谬。除了隐藏 ID,还有其他方法可以保护数据库数据
-
最好在前端做这个;运行两个查询。我总是无法理解那些寻求“只运行一个查询”的人,因为它可以节省数据库一些时间,然后他们去寻找一些真正可怕的技术来连接或合并数据,这将浪费更多的时间和计算资源......数据库擅长运行简单的语句,例如“从 indexedcolumn = value 的表中选择 *”,企业系统每秒在其企业数据库中处理数千个此类查询