我有一个 MySQL INSERT 查询,它将一个产品添加到多个类别:
INSERT INTO _categories_products (product_id, category_id) VALUES (1, 14), (1, 8), (1, 1), (1, 22);
Run Code Online (Sandbox Code Playgroud)
这非常有用,但是,如果我将相同的产品添加到同一父类别的另一个子类别中,它将为父类别创建重复的记录:
INSERT INTO _categories_products (product_id, category_id) VALUES (1, 14), (1, 8), (1, 1), (1, 23);
Run Code Online (Sandbox Code Playgroud)
问题:忽略重复记录插入的合适的 MySQL 查询是什么?换句话说,第二个查询应该仅 INSERT 一条记录:1, 23。
我也尝试过 INSERT IGNORE INTO 但没有任何改变。
谢谢你!
我想将两个值插入到表中,一个值是常量(user_id),第二个值是从其他表中选择的。我有一个错误:
#1064 - 你的语法 obok 'select name from payment_methods_default)' w linii 1 有问题
insert into payment_methods_assigned_to_users (user_id, name)
VALUES (1, select name from payment_methods_default);
Run Code Online (Sandbox Code Playgroud) 我已经检查过这个问题,但所有答案似乎都为只有一个字段的情况提供了解决方案。我需要在插入时另外设置一个字段。我尝试过类似的东西:
INSERT INTO foo (x, y)
select id
FROM boo b1, 3
Run Code Online (Sandbox Code Playgroud)
我明白了
SQL 错误 [42601]:错误:“3”处或附近的语法错误
如何使用selectAND 另一个值来INSERT INTOfoo?
我想将值插入到 tableA 中,然后更新列 [amount_hkd]。我已经成功使用触发器,但性能非常慢,应用触发器后需要一个小时才能完成 8400 行的插入。我怎样才能提高性能?感谢您的帮助
要执行的语句:
INSERT INTO tableA (suppliers, invoice_dates, shipment_dates, amounts, currency, currency_conversion_rate)
SELECT l.supplier, l.invoice_date, l.shipment_date, l.amount, l.currency, o.currency_conversion_rate
FROM tableB l
LEFT JOIN tableC o
ON l.currency = o.currency_code
WHERE l.supplier = 'ABC'
Run Code Online (Sandbox Code Playgroud)
我创建的函数:
CREATE OR REPLACE FUNCTION cal()
RETURNS TRIGGER AS $$
BEGIN
UPDATE tableA
SET amount_hkd = NEW.amounts * NEW.currency_conversion_rate;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
我尝试的第一个触发器:
CREATE CONSTRAINT TRIGGER update_amount
AFTER INSERT ON tableA
DEFERRABLE
INITIALLY DEFERRED
FOR EACH ROW
EXECUTE PROCEDURE …Run Code Online (Sandbox Code Playgroud) 当我尝试向表中插入多个日期值时出现错误,但是当我尝试使用一个日期值时它会成功执行.
使用2个以上日期值时出现的错误是:
java.sql.SQLException: [MySQL][ODBC 5.1 Driver][mysqld-5.5.15]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 'From) values(100,1,_binary'2011-09-17',_binary'2011-09-18')' at line 1
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(Unknown Source)
at SampleProg.InsertDate(SampleProg.java:37)
at SampleProg.main(SampleProg.java:65)
Run Code Online (Sandbox Code Playgroud)
我的源代码是:
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.io.IOException;
import java.sql.*;
public class SampleProg {
public void InsertDate(int ref,int id,Date d1,Date d2)
{
Connection …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用php和mysql在我的数据库中放入多条记录.如果我不尝试做第二次INSERT,我可以做第一次INSERT.一旦我添加第二个插入,根本没有写入任何记录.我认为这是一个语法错误,但我尝试了非常清楚的例子来自http://www.w3schools.com/php/php_mysql_insert_multiple.asp并通过php数组插入多行到mysql但仍然无法正常工作.唯一的区别是声明末尾的连接和半连接.
我有什么想法可能做错了吗?
$query="INSERT INTO myTable (
`user1` ,
`user2` ,
`user3`
)
VALUES ('data1', 'data2' , 'data3');";
$query .="INSERT INTO myTable (
`user1` ,
`user2` ,
`user3`
)
VALUES ('data4', 'data5' , 'data6')";
Run Code Online (Sandbox Code Playgroud) 我正在尝试将数据输入数据库.我使用echo来查看是否正在读取数据库,它是和输入的数据库echo一样,它只是不插入数据库.这是我用于注册页面的相同代码,除了新的修改,我的注册页面工作完美,所以我有点困惑为什么它不工作.
HTML
<!-- <div id="first">-->
<input type="text" id="fname" name="fname" value="" required>
<input type="text" id="lname" name="lname" value="" required>
<input type="text" id="email" name="email" value="" required>
<input type="number" id="phone" name="phone" value="" required>
<input type="submit" name="Update" value="Update">
<br>
Run Code Online (Sandbox Code Playgroud)
PHP
<?php
session_start();
require('../mysql.inc.php');
?>
<?php
if (isset($_POST['Update'])) {
echo $c_fname = $_POST['fname'];
echo $c_lname = $_POST['lname'];
echo $c_email = $_POST['email'];
echo $c_phone = $_POST['phone'];
$insert_det = "INSERT INTO Cus_acc_details(CUS_Fname,CUS_Lname,CUS_Phone,Cus_Email) VALUES (?,?,?,?)";
$stmt = mysqli_prepare($dbc, $insert_det);
mysqli_stmt_bind_param($stmt, 'sssi', $c_fname, $c_lname, $c_email, $c_phone);
if ($insert_det) {
echo …Run Code Online (Sandbox Code Playgroud) 我使用过其他人使用ipaddress方式的代码.但是,我想使用检查当前用户ID和ID号的代码.
$ipaddress = md5($_SERVER['REMOTE_ADDR']); // here I am taking IP as UniqueID but you can have user_id from Database or SESSION
/* Database connection settings */
$con = mysqli_connect('localhost','root','','database');
if (mysqli_connect_errno()) {
echo "<p>Connection failed:".mysqli_connect_error()."</p>\n";
} /* end of the connection */
if (isset($_POST['rate']) && !empty($_POST['rate'])) {
$rate = mysqli_real_escape_string($con, $_POST['rate']);
// check if user has already rated
$sql = "SELECT `id` FROM `tbl_rating` WHERE `user_id`='" . $ipaddress . "'";
$result = mysqli_query( $con, $sql);
$row = mysqli_fetch_assoc();//$result->fetch_assoc();
if (mysqli_num_rows($result) …Run Code Online (Sandbox Code Playgroud) 基本上,我想运行这样的SQL语句,但是由于错误而不能。不知道为什么吗?
INSERT INTO allevent (eventname)
VALUES (select username from registered)
Run Code Online (Sandbox Code Playgroud)
消息156,级别15,状态1,第1行
关键字'select'附近的语法错误。消息102,级别15,状态1,行1
')'附近的语法不正确。
我试图将记录从Coldfusion插入Oracle DB 11(g),但错误日志显示ORA-00911:无效字符。我可以从Oracle DB中选择记录,但无法插入。
下面是我的代码。
<cfquery name="qOracleData" datasource="Oracle_Test">
Insert into postindept (deptid, propos_position, descr, sm_descr60, grade) values ('1','110000 ', '110000 ','510000 ' ,'10');
COMMIT;
</cfquery>
Run Code Online (Sandbox Code Playgroud) sql-insert ×10
mysql ×5
sql ×5
php ×3
postgresql ×2
coldfusion ×1
duplicates ×1
forms ×1
java ×1
mysqli ×1
oracle ×1
select ×1
sql-server ×1
sql-update ×1
syntax-error ×1
triggers ×1
unique-key ×1