Я пытаюсь запустить вложенный запрос на MySQL (phpmyadmin) и через PHP, и оба приводят к тому же самому результату, который является неправильным.
ПРИМЕЧАНИЕ. Название таблицы было обрезано из-за чувствительности проекта
SELECT * FROM `table1` WHERE ID="SELECT `field1` FROM `table2` WHERE ID=1"
Это возвращает нулевые строки, хотя каждый запрос сам по себе дает действительный результат, как показано ниже
SELECT `field1` FROM `table2` WHERE ID=1
Дает требуемый результат, и этот вывод, когда он используется в первой части основного запроса, обеспечивает также то, что требуется. Пожалуйста помоги.
Не вставляйте его в кавычки. Вместо этого заключите его в круглые скобки:
SELECT * FROM `table1` WHERE ID=(SELECT `field1` FROM `table2` WHERE ID=1)
Если из подзапроса ожидается несколько строк, используйте WHERE ID IN (SELECT...)
вместо WHERE ID=(SELECT...)
Вы, вероятно, получите лучшую производительность с помощью JOIN
:
SELECT table1.* FROM table1 JOIN table2 ON table1.ID = table2.field1 WHERE table1.ID = 1
Ваш вложенный запрос неверен, он должен выглядеть следующим образом:
SELECT * FROM `table1` WHERE ID in (SELECT `field1` FROM `table2` WHERE ID=1)
В вашем случае вы сравниваете table1.ID со строкой, содержащей второй запрос.