SQL 创建唯一 id WHERE 不在两个表中
Posted
技术标签:
【中文标题】SQL 创建唯一 id WHERE 不在两个表中【英文标题】:SQL create unique id WHERE not IN two table 【发布时间】: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 了解更多信息
【参考方案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 EXISTS
s:
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
【讨论】:
以上是关于SQL 创建唯一 id WHERE 不在两个表中的主要内容,如果未能解决你的问题,请参考以下文章