我正在尝试检查我的两个tables
中的任何一个是否包含content_key
列中的特定值。一个表用于公共内容(content
),另一个表用于提交(content_submissions
)。当用户向我们提交内容(YouTube视频ID等)时,我想检查它是否已经提交给我们,无论是在公共表还是私有(提交)表中。这样,我们最终不会在提交过程中接受相同内容的重复。
这两个表格看起来像这样。
content
*----*-------------*
| id | content_key |
*----*-------------*
| 1 | sOWewQO3hpg |
*----*-------------*
| 2 | e2CJgQjH5lE |
*----*-------------*
content_submissions
*----*-------------*
| id | content_key |
*----*-------------*
| 1 | BOtcpPVNvhA |
*----*-------------*
因此,当用户提交密钥e2CJgQjH5lE
或BOtcpPVNvhA
时(在不同时间),我希望查询告诉我密钥已经存在于数据库中。
我不仅在active
表中有content
列而不是有两个表的原因是因为每次不接受内容时它会显着增加id,使网址成为有点随机,而不是顺序。
答案 0 :(得分: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
,否则将显示匹配的记录总数。
希望这有帮助。
答案 1 :(得分:1)
SELECT COUNT(*)
FROM
(Select content_key from content union select content_key from content_submissions) v
WHERE content_key = 'new key'
答案 2 :(得分:0)
select id from content
where content.content_key="myKey"
UNION
select id from content_submissions
content_submissions.content_key="myKey"
答案 3 :(得分:0)
如果您要使用
SELECT *
FROM content
WHERE content_key = value
UNION
SELECT *
FROM content_submissions
WHERE content_key = value
应该这样做。
UNION用于组合多个SELECT语句的结果 到一个结果集。
UNION的默认行为是从中删除重复的行 结果。