我有带有两个表的 MySQL 数据库:用户和项目。它们看起来像这样:
用户:
id | user_name | desc
--------------------------
1 | john | tall
2 | dave | fat
3 | maria | pretty
项目:
id | item_name | color
--------------------------
1 | trousers | red
2 | shoes | blue
3 | shoes | red
我想从具有特定 ID 的项目的数据库列表中进行选择,并且它的名称是 LIKE 关键字。它用于简单的搜索引擎。我正在做这样的查询:
SELECT id, user_name, ( SELECT item_name FROM items WHERE id = u.id ) as desc FROM users u WHERE desc LIKE "%shoes%" AND color LIKE "%blue%"
结果,我希望一行包含 id = 2、username = dave 和 itemname = shoes,因为它是唯一满足我查询的一行。不幸的是,我收到一条消息,说没有“desc”列。我知道“用户”中没有这样的列,但是如何告诉 MySQL 从名为 desc 的子查询中获取它?
附加问题:是否可以使用 WHERE ... LIKE 命令和数组样式,如 IN (val1, val2, val3)?我的意思是代替 loooong 查询:
SELECT name
FROM users
WHERE name
LIKE "%john%" OR name
LIKE "%steven%" OR name LIKE "bob%"
缩短:
SELECT name FROM users WHERE name LIKE IN ( "%john%", "%steven%", "%bob%")
提前致谢。