在这篇文章中,我们将为您详细介绍如何在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如果不存在就创建表)
- 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 数据库中使用 if not exists
。
create schema if not exists appkasir;
use appkasir;
create table if not exists admin (
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)
);
解决方法
您没有给出 congret 错误消息。我认为这不是 if exists
的错误,而是主键的错误。
看看MySQL reference。
试试:
create schema if not exists appkasir;
use appkasir;
create table if not exists admin (
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
);
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()如果不存在?
如果两个值都不存在,如何推入数组?这是我的数组:
[ { 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具有双重条件,如果不存在
如果电子邮件地址在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(如果不存在)(不使用主键)
如果该 对 不存在,如何插入一行?
*注意这些不是主键,我的主键设置为自动增量,
尝试插入时忽略但不起作用
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(如果不存在)(不使用主键)等相关知识的信息别忘了在本站进行查找喔。
本文标签: