首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询不匹配任何结果

问SQL查询不匹配任何结果
EN

Stack Overflow用户
提问于 2020-07-12 00:09:18
回答 3查看 81关注 0票数 0

我不懂SQL。我读了一些指南,拼凑了这个问题:

代码语言:javascript
复制
SELECT DISTINCT K.barcode 
FROM wp_weblib_keywords K, wp_weblib_collection C 
WHERE keyword LIKE Teen 
  AND keyword LIKE 7-12 && K.barcode = C.barcode 
ORDER BY C.barcode ASC

我正在努力寻找每一本同时有“青少年”和"7-12“关键字的书(我需要这两个关键字都有,而不是只有一个)。下面是我初始化每个表的方式:

代码语言:javascript
复制
CREATE TABLE weblib_keywords 
(
     keyword VARCHAR(64) NOT NULL,
     barcode varchar(16) not null check (barcode <> ''),
     KEY (keyword) 
) CHARACTER SET utf8;

CREATE TABLE weblib_collection 
(
     barcode varchar(16) not null unique check (barcode <> ''),
     title varchar(128) not null check (title <> ''),
     author varchar(64) not null check (author <> ''),
     PRIMARY KEY (barcode),
     KEY (title),
     KEY (author)
) CHARACTER SET utf8;

我认为问题是我没有告诉SQL在哪个表中搜索,但我不确定如何编写。谢谢你的帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-12 00:48:28

您可以根据您的数据量尝试UNION。

代码语言:javascript
复制
SELECT K.barcode FROM wp_weblib_keywords K 
inner join wp_weblib_collection C
on K.barcode = C.barcode
WHERE keyword LIKE '%Teen%' 
UNION
SELECT K.barcode FROM wp_weblib_keywords K 
inner join wp_weblib_collection C
on K.barcode = C.barcode
WHERE keyword LIKE '%7-12%' 

Why UNION ?

编辑:

如果您只需要这两个,请尝试下面。对于同一行,如果您同时尝试LIKE和AND,则不会给出任何结果。您应该考虑使用不同的别名重新联接同一个表,并分别检查您的约束。

代码语言:javascript
复制
SELECT c.barcode FROM wp_weblib_keywords K1 
inner join wp_weblib_collection C
on K1.barcode = C.barcode
inner join wp_weblib_keywords K2 
on K2.barcode = C.barcode
WHERE k1.keyword LIKE '%Teen%' and k2.keyword LIKE '%7-12%' 
group by c.barcode 
票数 1
EN

Stack Overflow用户

发布于 2020-07-12 00:11:40

尝试下面的操作-使用like操作符,您需要通配符'%'

代码语言:javascript
复制
SELECT DISTINCT K.barcode FROM wp_weblib_keywords K inner join wp_weblib_collection C
on K.barcode = C.barcode
WHERE keyword LIKE '%Teen%' OR keyword LIKE '%7-12%' 
order by C.barcode 
票数 2
EN

Stack Overflow用户

发布于 2020-07-12 00:30:20

如果wp_weblib_keywords_table的语义是在每一行中只包含一个关键字,那么这个查询永远不会返回结果(格式问题除外)。

这是因为查询会查看wp_weblib_keywords表中的每一行,并尝试查找关键字为两个不同值的一行。嗯,表中的一行永远不会有等于两个单独值的列。

试试这个:

代码语言:javascript
复制
SELECT DISTINCT C.barcode 
FROM wp_weblib_collection C
INNER JOIN join wp_weblib_keywords K1 on C.barcode = K1.barcode 
INNER JOIN wp_weblib_keywords K2 on c.barcode = K2.barcode
WHERE k1.keyword = 'Teen' AND k2.keyword = '7-12' 
ORDER BY C.barcode 

如果有一条记录的关键字为'Teen‘,另一条记录的关键字为'7-12’,则该查询将返回行

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62851569

复制
相关文章

相似问题

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