GVKun编程网logo

如何在 MySQL 数据库上使用“如果不存在”(mysql如果不存在就创建表)

1

在这篇文章中,我们将为您详细介绍如何在MySQL数据库上使用“如果不存在”的内容,并且讨论关于mysql如果不存在就创建表的相关问题。此外,我们还会涉及一些关于2023-03-13:给定一个整数数组A

在这篇文章中,我们将为您详细介绍如何在 MySQL 数据库上使用“如果不存在”的内容,并且讨论关于mysql如果不存在就创建表的相关问题。此外,我们还会涉及一些关于2023-03-13:给定一个整数数组 A,坡是元组 (i, j),其中 i < j 且 A[i] <= A[j], 这样的坡的宽度为 j - i。 找出 A 中的坡的最大宽度,如果不存在,返回 0、Array.push()如果不存在?、MySQL INSERT INTO具有双重条件,如果不存在、MySQL INSERT(如果不存在)(不使用主键)的知识,以帮助您更全面地了解这个主题。

本文目录一览:

如何在 MySQL 数据库上使用“如果不存在”(mysql如果不存在就创建表)

如何在 MySQL 数据库上使用“如果不存在”(mysql如果不存在就创建表)

如何解决如何在 MySQL 数据库上使用“如果不存在”

如何在 MysqL 数据库中使用 if not exists

  1. create schema if not exists appkasir;
  2. use appkasir;
  3. create table if not exists admin (
  4. id int(11) not null auto_increment,nama varchar(20) not null,no_telp varchar(20) null,alamat varchar(50) null,email varchar(50) null,primary key (id)
  5. );

解决方法

您没有给出 congret 错误消息。我认为这不是 if exists 的错误,而是主键的错误。

看看MySQL reference。

试试:

  1. create schema if not exists appkasir;
  2. use appkasir;
  3. create table if not exists admin (
  4. id int(11) not null auto_increment primary key,nama varchar(20) not null,no_telp varchar(20) null,alamat varchar(50) null,email varchar(50) null
  5. );

2023-03-13:给定一个整数数组 A,坡是元组 (i, j),其中 i < j 且 A[i] <= A[j], 这样的坡的宽度为 j - i。 找出 A 中的坡的最大宽度,如果不存在,返回 0

2023-03-13:给定一个整数数组 A,坡是元组 (i, j),其中 i < j 且 A[i] <= A[j], 这样的坡的宽度为 j - i。 找出 A 中的坡的最大宽度,如果不存在,返回 0

2023-03-13:给定一个整数数组 A,坡是元组 (i, j),其中 i < j 且 A[i] <= A[j], 这样的坡的宽度为 j - i。 找出 A 中的坡的最大宽度,如果不存在,返回 0。 示例 1: 输入:[6,0,8,2,1,5] 输出:4 解释: 最大宽度的坡为 (i, j) = (1, 5): A[1] = 0 且 A[5] = 5。 示例 2: 输入:[9,8,1,0,1,9,4,0,4,1] 输出:7 解释: 最大宽度的坡为 (i, j) = (2, 9): A[2] = 1 且 A[9] = 1。

答案2023-03-13:

单调栈,严格来说说递减栈。然后从右往左遍历。 时间复杂度:O(N)。 空间复杂度:O(N)。

这代码用山寨版chatgpt写,不用改代码。

代码用rust编写。代码如下:

fn max_width_ramp(arr: &[i32]) -> usize {
    let n = arr.len();
    // 栈中只放下标
    let mut stack = vec![0; n];
    // 栈的大小
    let mut r = 0;
    for i in 0..n {
        if r == 0 || arr[stack[r - 1]] > arr[i] {
            stack[r] = i;
            r += 1;
        }
    }
    let mut ans = 0;
    // 从右往左遍历
    // j = n - 1
    for j in (0..n).rev() {
        while r != 0 && arr[stack[r - 1]] <= arr[j] {
            let i = stack[r - 1];
            r -= 1;
            ans = ans.max(j - i);
        }
    }
    ans
}

fn main() {
    let arr = [6, 0, 8, 2, 1, 5];
    let ans = max_width_ramp(&arr);
    println!("{}", ans);

    let arr = [9, 8, 1, 0, 1, 9, 4, 0, 4, 1];
    let ans = max_width_ramp(&arr);
    println!("{}", ans);
}

代码用golang编写。代码如下:

package main

import "fmt"

func maxWidthRamp(arr []int) int {
	n := len(arr)
	// 栈中只放下标
	stack := make([]int, n)
	// 栈的大小
	r := 0
	for i := 0; i < n; i++ {
		if r == 0 || arr[stack[r-1]] > arr[i] {
			stack[r] = i
			r++
		}
	}
	ans := 0
	// 从右往左遍历
	// j = n - 1
	for j := n - 1; j >= 0; j-- {
		for r != 0 && arr[stack[r-1]] <= arr[j] {
			i := stack[r-1]
			r--
			ans = max(ans, j-i)
		}
	}
	return ans
}

func max(x, y int) int {
	if x > y {
		return x
	}
	return y
}

func main() {
	if true {
		arr := []int{6, 0, 8, 2, 1, 5}
		ans := maxWidthRamp(arr)
		fmt.Println(ans)
	}
	if true {
		arr := []int{9, 8, 1, 0, 1, 9, 4, 0, 4, 1}
		ans := maxWidthRamp(arr)
		fmt.Println(ans)
	}
}

Array.push()如果不存在?

Array.push()如果不存在?

如果两个值都不存在,如何推入数组?这是我的数组:

[    { name: "tom", text: "tasty" },    { name: "tom", text: "tasty" },    { name: "tom", text: "tasty" },    { name: "tom", text: "tasty" },    { name: "tom", text: "tasty" }]

如果我尝试使用name: "tom"或再次将其推入数组text:"tasty",我什么都不希望发生…但是如果这两个都不存在,那么我希望它.push()

我怎样才能做到这一点?

答案1

小编典典

您可以使用自定义方法扩展Array原型:

// check if an element exists in array using a comparer function// comparer : function(currentElement)Array.prototype.inArray = function(comparer) {     for(var i=0; i < this.length; i++) {         if(comparer(this[i])) return true;     }    return false; };// adds an element to the array if it does not already exist using a comparer // functionArray.prototype.pushIfNotExist = function(element, comparer) {     if (!this.inArray(comparer)) {        this.push(element);    }};var array = [{ name: "tom", text: "tasty" }];var element = { name: "tom", text: "tasty" };array.pushIfNotExist(element, function(e) {     return e.name === element.name && e.text === element.text; });

MySQL INSERT INTO具有双重条件,如果不存在

MySQL INSERT INTO具有双重条件,如果不存在

如果电子邮件地址在list_email.email_addr中不存在且在list_no_email.email_addr中不存在,我正在尝试插入新记录

INSERT INTO list_email(fname, lname, email_addr) VALUES(''bob'', ''schmoe'', ''bogus@bogus.com''), (''mary'', ''lamb'', ''hoe@me.com'');SELECT email_addr FROM list_emailWHERE NOT EXIST(SELECT email_addr FROM email_addr WHERE email_addr = $post_addr) WHERE NOT IN (SELECT email_addr FROM list_no_email WHERE email_addr = $post_addr)LIMIT 1**************************** mysql tables ******************************mysql> desc list_email;+------------+--------------+------+-----+---------+----------------+| Field      | Type         | Null | Key | Default | Extra          |+------------+--------------+------+-----+---------+----------------+| id         | int(11)      | NO   | PRI | NULL    | auto_increment || list_name  | varchar(55)  | YES  |     | NULL    |                || fname      | char(50)     | YES  |     | NULL    |                || lname      | char(50)     | YES  |     | NULL    |                || email_addr | varchar(150) | YES  |     | NULL    |                |+------------+--------------+------+-----+---------+----------------+5 rows in set (0.00 sec)mysql> desc list_no_email;+------------+--------------+------+-----+-------------------+-----------------------------+| Field      | Type         | Null | Key | Default           | Extra                       |+------------+--------------+------+-----+-------------------+-----------------------------+| id         | int(11)      | NO   | PRI | NULL              | auto_increment              || date_in    | timestamp    | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP || email_addr | varchar(150) | YES  |     | NULL              |                             |+------------+--------------+------+-----+-------------------+-----------------------------+3 rows in set (0.00 sec)

*_ __ _ __ __ * 错误 * __ __ *
*

INSERT INTO list_email(fname, lname, email_addr) VALUES(''bob'', ''schmoe'', ''bogus@bogus.com''), (''mary'', ''lamb'', ''hoe@me.com''); SELECT email_addr FROM list_email WHERE NOT EXIST( SELECT email_addr FROM email_addr WHERE email_addr = $post_addr )  WHERE NOT IN ( SELECT email_addr FROM list_no_email WHERE email_addr = $post_addr )LIMIT 1;Query OK, 2 rows affected (0.00 sec)Records: 2  Duplicates: 0  Warnings: 0ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''SELECT email_addr FROM email_addr WHERE email_addr = $post_addr )  WHERE NOT IN '' at line 1

*_ __ _ __ __ 不带; __ * __ __ * __ **

mysql> INSERT INTO list_email(fname, lname, email_addr) VALUES(''bob'', ''schmoe'', ''bogus@bogus.com''), (''mary'', ''lamb'', ''hoe@me.com'')    -> SELECT email_addr FROM list_email AS tmp    -> WHERE NOT EXIST(    -> SELECT email_addr FROM email_addr WHERE email_addr = $post_addr    -> )    -> WHERE NOT IN (    -> SELECT email_addr FROM list_no_email WHERE email_addr = $post_addr    -> )LIMIT 1;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''SELECT email_addr FROM list_email AS tmpWHERE NOT EXIST(SELECT email_addr FROM'' at line 2

答案1

小编典典

代替

WHERE NOT EXIST(

WHERE email_addr NOT IN(

编辑

代替

SELECT email_addr FROM list_emailWHERE NOT IN(    SELECT email_addr FROM email_addr WHERE email_addr = $post_addr) WHERE NOT IN(    SELECT email_addr FROM list_no_email WHERE email_addr = $post_addr)LIMIT 1

SELECT email_addr FROM list_emailWHERE NOT IN(    SELECT email_addr FROM email_addr WHERE email_addr = $post_addr    UNION ALL    SELECT email_addr FROM list_no_email WHERE email_addr = $post_addr)LIMIT 1

MySQL INSERT(如果不存在)(不使用主键)

MySQL INSERT(如果不存在)(不使用主键)

如果该 不存在,如何插入一行?
*注意这些不是主键,我的主键设置为自动增量,

尝试插入时忽略但不起作用

INSERT IGNORE INTO mytable (`myid`, `theirid`) VALUES (''5'', ''1'')ON DUPLICATE KEY <DO NOTHING>

表格看起来像:

CREATE TABLE `mytable` (    `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,    `myid` bigint(20) NOT NULL,    `theirid` bigint(20) NOT NULL,    `activated` tinyint(1) NOT NULL DEFAULT ''0'',    `dateStamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP,    PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1$$

答案1

小编典典

1)您可以在上添加UNIQUE约束(myid, theirid)吗?如果是,请添加此约束并使用:

INSERT INTO mytable (myid, theirid)   VALUES (5, 1) ;

并忽略产生警告(或将替换为INSERT IGNORE

2)如果您不能添加这样的约束(例如,有时您希望允许这样的重复项而其他时候则不允许),则可以使用以下方法:

INSERT INTO mytable (myid, theirid)   SELECT 5, 1   FROM dual   WHERE NOT EXISTS        ( SELECT *          FROM mytable          WHERE myid = 5            AND theirid = 1        ) ;

关于如何在 MySQL 数据库上使用“如果不存在”mysql如果不存在就创建表的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于2023-03-13:给定一个整数数组 A,坡是元组 (i, j),其中 i < j 且 A[i] <= A[j], 这样的坡的宽度为 j - i。 找出 A 中的坡的最大宽度,如果不存在,返回 0、Array.push()如果不存在?、MySQL INSERT INTO具有双重条件,如果不存在、MySQL INSERT(如果不存在)(不使用主键)等相关知识的信息别忘了在本站进行查找喔。

本文标签: