【问题标题】:SQL create unique id WHERE not IN two tableSQL 创建唯一 id WHERE 不在两个表中
【发布时间】:2016-03-03 06:34:54
【问题描述】:

我的代码:

SELECT FLOOR(RAND() * 9999) AS random_num FROM product_list
WHERE 'random_num' NOT EXISTS 
(SELECT code_id FROM product_list) 
AND 'random_num' NOT EXISTS (SELECT p_code_id FROM item_group)
LIMIT 1 

当我用 PHP 代码运行时结果什么都没有,请指教。

【问题讨论】:

  • “不工作” - 不是问题
  • 对不起@MitchWheat,因为我的英语不好:)
  • WHERE 'random_num' NOT EXISTS 是无效的 SQL。列名不能用单引号括起来。 'random_num' 是一个字符串常量。 random_num 是列名。另外:在 exists 运算符前面放置列名(或字符串常量)也是无效的
  • 我该怎么办?
  • 避免为您的问题添加答案。请参阅How does accepting an answer work 了解更多信息

标签: sql


【解决方案1】:

试试

SELECT MAX(maxid) + 1
FROM (
SELECT MAX(code_id) maxid FROM product_list
UNION
SELECT MAX(p_code_id) maxid FROM item_group
)

【讨论】:

    【解决方案2】:

    使用派生表,并调整NOT EXISTSs:

    select random_num
    from
    (
      SELECT FLOOR(RAND() * 9999) AS random_num
      FROM product_list
    ) dt
    WHERE NOT EXISTS (SELECT * FROM product_list where random_num = code_id) 
      AND NOT EXISTS (SELECT * FROM item_group where random_num = p_code_id)
    LIMIT 1 
    

    【讨论】:

      猜你喜欢
      • 2021-10-12
      • 1970-01-01
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-18
      • 2015-03-14
      相关资源
      最近更新 更多