【发布时间】:2019-05-16 00:40:50
【问题描述】:
我想检查行是否存在,但不告诉列名,而只告诉它的值。即。
+------+------+------+
|field1|field2|field3|
+------+------+------+
| abc | cba | val |
+------+------+------+
SELECT * FROM myTable WHERE ... = (SELECT 'abc', 'cba', 'val')
有可能吗?
我正在用 php 编写一个函数,如果这样的行不存在,我想添加一行。函数将采用n 参数,即。
addNewRowIfDoesNotExist('table1', 'abc', 'cba', 'val');
我不想修改函数的签名,但我需要检查表中是否存在这样的行。所以我没有传递列名。那么如何在不告诉列名的情况下检查行是否存在?
谢谢
迈克
【问题讨论】:
-
不知道列名听起来不像是明智或可扩展的设计模式。
-
让你的代码依赖于你的列的顺序是一个坏主意。考虑类似:
addNewRowIfDoesNotExist('table', ['field1' => 'abc', 'field2' => 'cba'])