sql查询不匹配任何结果

hec6srdp  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(308)

我不懂sql。我读了一些指南,把这个问题拼凑起来:

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”两个关键词的书(我需要这本书同时有两个关键词,而不是一个或另一个)。我是这样初始化每个表的:

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要在哪个表中搜索,但是我不知道如何编写它。谢谢你的帮助!

njthzxwz

njthzxwz1#

你可以试试 UNION 基于你的数据量。

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%'

为什么是工会?
编辑:
如果你只需要他们两个尝试下面。如果你试着 LIKE 以及 AND 一起它不会给你任何结果。您应该考虑使用不同的别名再次连接同一个表,并分别检查约束。

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
jfewjypa

jfewjypa2#

尝试下面的-like操作符,你需要通配符 '%' ```
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

nx7onnlm

nx7onnlm3#

如果wp\u weblib\u keywords\u表的语义是在每行中包含一个关键字,那么这个查询将永远不会返回结果(除了格式问题)
原因是查询查看wp\u weblib\u keywords表中的每一行,并尝试查找关键字为两个独立值的单行。嗯,表中的一行永远不会有一列等于两个单独的值。
试试这个:

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”的记录,则该查询将返回行

相关问题