mysql select from table where row=(选择val1,val2,val3等等)

vyswwuz2  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(471)

我想检查行是否存在,但不告诉列名,只告诉它的值。例如。

+------+------+------+
|field1|field2|field3|
+------+------+------+
| abc  | cba  |  val |
+------+------+------+

SELECT * FROM myTable WHERE ... = (SELECT 'abc', 'cba', 'val')

有可能吗?
我正在用php编写一个函数,如果这样的行不存在,我想添加一行。功能需要 n 参数,即。

addNewRowIfDoesNotExist('table1', 'abc', 'cba', 'val');

我不想修改函数的符号,但我需要检查表中是否存在这样的行。所以我不会传递列名。那么,如何在不告诉列名称的情况下检查行是否存在呢?
谢谢
迈克

svujldwt

svujldwt1#

谢谢你的评论。我在网上找到的。
检查两个“选择”是否相等
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>");
    }
}

在运行此函数之前,需要指定一个新视图。我的table最重要 id 所以在我看来,我不接受。

相关问题