MySQL SELECT 来自 table 其中 row = (SELECT val1, val2, val3, ... 等)
MySQL SELECT from table where row = (SELECT val1, val2, val3, ... etc.)
我想检查行是否存在,但不告诉列名,只告诉它的值。 IE.
+------+------+------+
|field1|field2|field3|
+------+------+------+
| abc | cba | val |
+------+------+------+
SELECT * FROM myTable WHERE ... = (SELECT 'abc', 'cba', 'val')
可能吗?
我正在 php 中编写一个函数,如果不存在这样的行,我想添加一行。函数将采用 n
个参数,即
addNewRowIfDoesNotExist('table1', 'abc', 'cba', 'val');
我不想修改函数的签名,但我需要检查 table 中是否存在这样的行。所以我没有传递列名。那么如何在不告诉列名称的情况下检查行是否存在?
谢谢
麦克
感谢您的评论。我在网上找到了。
check if two "select"s are equivalent
http://www.mysqltutorial.org/mysql-minus/
谢谢。
麦克
如果你想明白我的意思,就这样吧:
function insertRecordIntoTableIfNotExist()
{
if (func_num_args() < 2)
exit("Too few arguments at insertRecordIntoTableIfNotExist()<br>");
$str = changeTableIntoStringWithCommasAndQuotes(func_get_args());
$firstComma = strpos($str, ",");
$tableName = substr($str, 0, $firstComma);
$tableName = substr($tableName, 1, strlen($tableName) - 2);
$rest = substr($str, $firstComma + 1);
$result = executeQuery("SELECT " . $rest . " MINUS SELECT * FROM " . $tableName . "_v;");
if ($result != FALSE)
if (hasRows($result))
return;
if (executeQuery("INSERT INTO " . $tableName . " VALUES(NULL, " . $rest . ");") == FALSE)
{
printWrongQuery();
exit("Error while inserting at insertRecordIntoTableIfNotExist()<br>");
}
}
您需要在 运行 此函数之前指定一个新视图。我的表排在第一位id
,所以看来,我不拿了
我想检查行是否存在,但不告诉列名,只告诉它的值。 IE.
+------+------+------+
|field1|field2|field3|
+------+------+------+
| abc | cba | val |
+------+------+------+
SELECT * FROM myTable WHERE ... = (SELECT 'abc', 'cba', 'val')
可能吗?
我正在 php 中编写一个函数,如果不存在这样的行,我想添加一行。函数将采用 n
个参数,即
addNewRowIfDoesNotExist('table1', 'abc', 'cba', 'val');
我不想修改函数的签名,但我需要检查 table 中是否存在这样的行。所以我没有传递列名。那么如何在不告诉列名称的情况下检查行是否存在?
谢谢
麦克
感谢您的评论。我在网上找到了。
check if two "select"s are equivalent
http://www.mysqltutorial.org/mysql-minus/
谢谢。
麦克
如果你想明白我的意思,就这样吧:
function insertRecordIntoTableIfNotExist()
{
if (func_num_args() < 2)
exit("Too few arguments at insertRecordIntoTableIfNotExist()<br>");
$str = changeTableIntoStringWithCommasAndQuotes(func_get_args());
$firstComma = strpos($str, ",");
$tableName = substr($str, 0, $firstComma);
$tableName = substr($tableName, 1, strlen($tableName) - 2);
$rest = substr($str, $firstComma + 1);
$result = executeQuery("SELECT " . $rest . " MINUS SELECT * FROM " . $tableName . "_v;");
if ($result != FALSE)
if (hasRows($result))
return;
if (executeQuery("INSERT INTO " . $tableName . " VALUES(NULL, " . $rest . ");") == FALSE)
{
printWrongQuery();
exit("Error while inserting at insertRecordIntoTableIfNotExist()<br>");
}
}
您需要在 运行 此函数之前指定一个新视图。我的表排在第一位id
,所以看来,我不拿了