结合“like”和“equals”(mysql)
我有这张桌子:结合“like”和“equals”(mysql),mysql,sql,Mysql,Sql,我有这张桌子: +------+----------+-------------+----------+ | id | name | name_orig | year | +------+----------+-------------+----------+ | 1 | movie | film | 1987 | | 2 | game | toy | NULL | | 3 | picture
+------+----------+-------------+----------+
| id | name | name_orig | year |
+------+----------+-------------+----------+
| 1 | movie | film | 1987 |
| 2 | game | toy | NULL |
| 3 | picture | art | 2018 |
| 4 | audio | voice | 1 |
+------+----------+-------------+----------+
当我使用以下命令时:
SELECT * FROM `table` WHERE `name` LIKE 'a%' OR `name_orig` LIKE 'a%' AND `year`='1'
它的代码是第3行和第4行,而不是只有4行
我试着用这个修改过的代码来修复它
SELECT * FROM `table` WHERE (`name` LIKE 'a%' OR `name_orig` LIKE 'a%') AND `year`='1'
但是现在MySQL返回了一个空结果
如何在“name”和“name_orig”中搜索,而不忘记“year”以获得所需的结果行4?尝试删除数字周围的单引号。。。year=1,即使在我得到第4行的那一年有一个int,我还是在上面测试了它 然后插入:
INSERT INTO test (id,name, name_orig, year)
VALUES ( 1, 'movie','film', 1987 ),(2, 'game', 'toy', NULL),(3,'picture','art', 2018),(4, 'audio', 'voice', 1) ;
询问
SELECT * FROM `test` WHERE (`name` LIKE 'a%' OR `name_orig` LIKE 'a%') AND `year`='1'
结果是:
id | name | name_orig | year
------------------------------------
4 | audio | voice | 1
尝试删除1的引号您的年份列是什么类型的?您是否应该使用AND`year`=1无引号?尽管我希望MySQL会强制它。您的第二个查询在逻辑上是正确的。在本地尝试一下,我可以使用您的查询,如图所示,无论year是int还是varchar。。。column.@T.J.Crowder我在一个fiddle上测试了它,同样的…MySQL将强制,数据似乎与问题中描述的不一样。是的,我们不能用给出的数据回答。谢谢,但这不是问题。不清楚,在db-fiddle.com它可以工作,但在我的服务器上-不意味着你没有给出相同的数据,所以我们无法回答
id | name | name_orig | year
------------------------------------
4 | audio | voice | 1