我需要在名为t_npc的表中搜索列(如下所示),以获取特定值i
,但多次失败。
示例(不起作用)
SELECT * FROM t_npc WHERE a_item_0 LIKE '%a_item_%' = 123;
SELECT * FROM t_npc WHERE 'a_item_0' <=> 'a_item_19' = 123;
SELECT a_index FROM t_npc WHERE a_item_0 LIKE 'a_item_%' = 123;
SELECT a_index, a_name FROM t_npc WHERE t_npc.a_item_0 or t_npc.a_item_1 or t_npc.a_item_2 or t_npc.a_item_4 = 44;
和其他许多人在下面的列名中搜索一个值,但它永远不会起作用。我已经尝试使用这些列的外卡仍然没有运气。
`a_item_0` int(11) NOT NULL DEFAULT '-1',
`a_item_1` int(11) NOT NULL DEFAULT '-1',
`a_item_2` int(11) NOT NULL DEFAULT '-1',
`a_item_3` int(11) NOT NULL DEFAULT '-1',
`a_item_4` int(11) NOT NULL DEFAULT '-1',
`a_item_5` int(11) NOT NULL DEFAULT '-1',
`a_item_6` int(11) NOT NULL DEFAULT '-1',
`a_item_7` int(11) NOT NULL DEFAULT '-1',
`a_item_8` int(11) NOT NULL DEFAULT '-1',
`a_item_9` int(11) NOT NULL DEFAULT '-1',
`a_item_10` int(11) NOT NULL DEFAULT '-1',
`a_item_11` int(11) NOT NULL DEFAULT '-1',
`a_item_12` int(11) NOT NULL DEFAULT '-1',
`a_item_13` int(11) NOT NULL DEFAULT '-1',
`a_item_14` int(11) NOT NULL DEFAULT '-1',
`a_item_15` int(11) NOT NULL DEFAULT '-1',
`a_item_16` int(11) NOT NULL DEFAULT '-1',
`a_item_17` int(11) NOT NULL DEFAULT '-1',
`a_item_18` int(11) NOT NULL DEFAULT '-1',
`a_item_19` int(11) NOT NULL DEFAULT '-1',
答案 0 :(得分:0)
select value from table where field = 'value'
或
select value from table where field like '%value%'
你正在做这两件事,这是行不通的。提供有关您要完成的内容的更多详细信息,但是根据您的要求,这就是您的查询无效的原因。
你可以这样做:
select value from table where field_a = 'valuea' AND field_b like '%valueb'
答案 1 :(得分:0)
漫长的道路:
SELECT a_index, a_name FROM t_npc WHERE
t_npc.a_item_0 = 44 or t_npc.a_item_1 = 44 or t_npc.a_item_2 = 44
...
or t_npc.a_item19 = 44;
稍微好一些,你可以使用IN:
select a_index, a_name from t_npc where 44 in
(a_item_0, a_item_1, a_item_2, a_item3,
...
a_item18, a_item19);
你还应该创建一个t_npc_items表,而不是在t_npc上有这么多字段。
[你可以通过查询information_schema中的字段名称然后执行该命令来生成sql,但是metasql让unicorns哭了。]
答案 2 :(得分:0)
您应该使用不同的表结构。
尝试这样的事情
CREATE TABLE npc (
Npc_id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (Npc_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE item (
Npc_id bigint(20) unsigned NOT NULL,
Item_id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
Item_value int(11) NOT NULL,
PRIMARY KEY (Item_id),
KEY Npc_id (Npc_id),
CONSTRAINT Item_ibfk_1 FOREIGN KEY (Npc_id) REFERENCES Npc (Npc_id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;