0

我正在尝试检查我的两个是否tables包含列中的特定值content_key。一张表用于公开内容 ( content),另一张表用于提交 ( content_submissions)。当用户向我们提交内容(YouTube 视频 ID 等)时,我想检查它是否已经提交给我们,是在公共表中还是在私有(提交)表中。这样,我们最终不会在提交过程中接受相同内容的重复。

这两个表看起来像这样。

content

*----*-------------*
| id | content_key |
*----*-------------*    
| 1  | sOWewQO3hpg |
*----*-------------*
| 2  | e2CJgQjH5lE |
*----*-------------*

content_submissions

*----*-------------*
| id | content_key |
*----*-------------*    
| 1  | BOtcpPVNvhA |
*----*-------------*

因此,当用户提交密钥e2CJgQjH5lEBOtcpPVNvhA(在不同时间)时,我希望查询告诉我密钥已经在数据库中。

我不只是active在表中有一个列content而不是有两个表的原因是因为每次不接受内容时它都会显着增加 id,使 url 有点随机,而不是顺序。

4

4 回答 4

4

您可以使用组合两个表的行UNION

SELECT COUNT(content_key)
FROM
    (
        SELECT content_key
        FROM content
        UNION
        SELECT content_key
        FROM content_submissions
    ) a
WHERE content_key = 'valHere'

如果您要查找的值不存在,它将简单地返回0,否则将显示匹配的记录总数。

SQLFiddle 演示

希望这可以帮助。

在此处输入图像描述

于 2012-09-07T08:53:12.230 回答
1
SELECT COUNT(*)
FROM
    (Select content_key from content union select content_key from content_submissions) v
WHERE content_key = 'new key'
于 2012-09-07T08:52:53.367 回答
0
select id from content
where content.content_key="myKey"
UNION
select id from content_submissions
content_submissions.content_key="myKey"
于 2012-09-07T08:53:14.373 回答
0

如果你要使用

SELECT *
FROM content
WHERE content_key = value
UNION
SELECT *
FROM content_submissions
WHERE content_key = value

应该这样做。

13.2.8.4 开始。UNION 语法

UNION 用于将多个 SELECT 语句的结果组合成一个结果集。

UNION 的默认行为是从结果中删除重复的行。

于 2012-09-07T08:54:39.500 回答