首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php select from multi dual

问php select from multi dual
EN

Stack Overflow用户
提问于 2011-03-20 19:26:26
回答 3查看 662关注 0票数 0

我想插入一些数据到数据库中。在插入过程中,我首先要做一个判断:如果标题在table1和table2中不存在,则插入。如何写出这个双重句呢?是这样的吗?或者..。谢谢。

代码语言:javascript
复制
mysql_query("
INSERT INTO table1 title 
SELECT '".$title."' 
FROM dual 
WHERE not exists (
    SELECT title 
    FROM table1 
    WHERE table1.title = '".$title."'
) AND (
    SELECT title 
    FROM table2
    WHERE table2.title = '".$title."'
) ");
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-20 19:42:38

首先,MySQL不使用dual表。只需直接选择该值即可。通常,要插入到表中,只需使用

代码语言:javascript
复制
INSERT INTO table1(title) SELECT 'something'; # or
INSERT INTO table1(title) VALUES ('something');

但是,下面使用了一个虚构的表(别名为TT),以便能够对其他表使用左连接。

代码语言:javascript
复制
mysql_query("
    INSERT INTO table1(title)
    SELECT theTitle
    FROM (SELECT '".$title."' theTitle) TT
    LEFT JOIN table1 ON table1.title = TT.theTitle
    LEFT JOIN table2 ON table2.title = TT.theTitle
    WHERE table1.title is null and table2.title is null
");

您也可以只填写NOT EXISTS子句

代码语言:javascript
复制
mysql_query("
    INSERT INTO table1(title)
    SELECT '".$title."'
    WHERE NOT EXISTS (SELECT * FROM table1 WHERE title = '".$title."')
      AND NOT EXISTS (SELECT * FROM table2 WHERE title = '".$title."')
");

但我更喜欢前者,因为这需要你使用$title 3次。

票数 3
EN

Stack Overflow用户

发布于 2011-03-20 19:33:51

代码语言:javascript
复制
mysql_query("INSERT INTO table1 title 
               SELECT '".$title."' FROM dual 
               WHERE not exists (SELECT title FROM table1 WHERE table1.title = '".$title."') AND 
                     not exists (SELECT title FROM table2 WHERE table2.title = '".$title."') ");

查询中缺少第二个not exists。

票数 1
EN

Stack Overflow用户

发布于 2011-04-28 18:27:29

有联盟的人吗?

代码语言:javascript
复制
mysql_query("
INSERT INTO table1 title 
SELECT '".addSlashes($title)."' 
FROM dual 
WHERE not exists (
   SELECT title 
   FROM table1 
   WHERE title = '".addSlashes($title)."'
   UNION
   SELECT title 
   FROM table2 
   WHERE title = '".addSlashes($title)."'
) ");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5368171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档