大家好,感谢你们阅读……
我一直在努力寻找解决SQL和PHP问题的方法。下面是我正在尝试使用的表格的一个片段。
该表名为web_navbar_links,字段名为slug
+------------------+-------+
| slug | child |
+------------------+-------+
|business-multiseat| 1 |
+------------------+-------+
|consumer-multiseat| 1 |
+------------------+-------+我有一个字符串"multiseat“,我需要一个SQL查询,它将搜索所有行,并拉回第一个子字符串"business”和/或"consumer“,这些子字符串与字符串"multiseat”匹配,也是child='1‘。
我试过concat_ws和LIKE,但我觉得它们不是正确的命令,除非是ofc我不懂它们的用法:D
如果有人能帮我,我会很高兴的。
丹。
发布于 2010-10-11 19:31:40
您可能想要使用:
SELECT DISTINCT SUBSTRING(slug, 1, INSTR(slug, '-') - 1) result
FROM web_navbar_links
WHERE SUBSTRING(slug FROM INSTR(slug, '-') + 1) = 'multiseat' AND child = 1;但是,请注意,如果您计划在web_navbar_links表中有很多行,这可能会很慢。这样的查询将无法使用slug上的索引(如果存在)。
测试用例:
CREATE TABLE web_navbar_links (id int, slug varchar(70), child int);
INSERT INTO web_navbar_links VALUES (1, 'business-multiseat', 1);
INSERT INTO web_navbar_links VALUES (2, 'business-singleseat', 1);
INSERT INTO web_navbar_links VALUES (3, 'consumer-noseat', 1);
INSERT INTO web_navbar_links VALUES (4, 'consumer-multiseat', 1);
INSERT INTO web_navbar_links VALUES (5, 'something', 1);
INSERT INTO web_navbar_links VALUES (6, 'business-multiseat', 2);
INSERT INTO web_navbar_links VALUES (7, 'something-else', 2);结果:
SELECT id, SUBSTRING(slug, 1, INSTR(slug, '-') - 1) result
FROM web_navbar_links
WHERE SUBSTRING(slug FROM INSTR(slug, '-') + 1) = 'multiseat' AND child = 1;
+------+----------+
| id | result |
+------+----------+
| 1 | business |
| 4 | consumer |
+------+----------+
2 rows in set (0.00 sec)https://stackoverflow.com/questions/3905713
复制相似问题